diff --git a/tools/scripts/tsc/generate-options.ts b/tools/scripts/tsc/generate-options.ts index 0ee304c803521..2536f2b364bb5 100644 --- a/tools/scripts/tsc/generate-options.ts +++ b/tools/scripts/tsc/generate-options.ts @@ -84,6 +84,9 @@ export function validateOptions(model: OptionsModel): void { if (option.declaration?.affectsSemanticDiagnostics) { assert(option.declaration.affectsBuildInfo, `Semantic diagnostics must affect build info: ${option.name}`); } + if (option.declaration?.affectsEmit || option.declaration?.affectsDeclarationPath) { + assert(option.declaration.affectsBuildInfo, `Emit options must affect build info: ${option.name}`); + } if (option.transpile) { const { value, declarationValue, unless } = option.transpile; assert(value === "clear" || option.type === "Tristate", `Non-boolean transpile value: ${option.name}`); @@ -294,6 +297,23 @@ export function prepareCompilerOptions(options: RawCompilerOptions, currentDirec `; } +function optionValuesDiffer(type: GoCompilerOptionType, a: string, b: string): string { + switch (type) { + case "*int": + return `${a} != ${b} && (${a} == nil || ${b} == nil || *${a} != *${b})`; + case "[]string": + case "[]PluginImport": + case "[]tspath.RootedDirectoryPath": + return `(${a} == nil) != (${b} == nil) || !slices.Equal(${a}, ${b})`; + case "*collections.OrderedMap[string, []string]": + return `!${a}.EqualFunc(${b}, func(a, b []string) bool { + return (a == nil) == (b == nil) && slices.Equal(a, b) +})`; + default: + return `${a} != ${b}`; + } +} + function optionsEquality(name: string, fields: { name: string; type: GoCompilerOptionType; }[]): string { return `func (options *${name}) Equals(other *${name}) bool { if options == other { return true } @@ -302,24 +322,7 @@ function optionsEquality(name: string, fields: { name: string; type: GoCompilerO fields.map(field => { const a = `options.${field.name}`; const b = `other.${field.name}`; - let differs: string; - switch (field.type) { - case "*int": - differs = `${a} != ${b} && (${a} == nil || ${b} == nil || *${a} != *${b})`; - break; - case "[]string": - case "[]PluginImport": - case "[]tspath.RootedDirectoryPath": - differs = `(${a} == nil) != (${b} == nil) || !slices.Equal(${a}, ${b})`; - break; - case "*collections.OrderedMap[string, []string]": - differs = `!${a}.EqualFunc(${b}, func(a, b []string) bool { - return (a == nil) == (b == nil) && slices.Equal(a, b) -})`; - break; - default: - differs = `${a} != ${b}`; - } + const differs = optionValuesDiffer(field.type, a, b); return `if ${differs} { return false }`; }).join("\n") } @@ -538,19 +541,22 @@ export function generateOptionComparisons(model = options): string { const expressions = model.compilerOptions.flatMap(option => { const declaration = option.declaration; if (!declaration?.[flag]) return []; - const kind = optionKind(option); - assert(kind === "Boolean" || kind === "String" || kind === "Enum", `Unsupported comparison type for ${option.name}: ${option.type}`); const value = (receiver: string) => { const field = `${receiver}.${fieldName(option)}`; if (declaration.strictFlag) return `${receiver}.GetStrictOptionValue(${field})`; return field; }; - return [`${value("oldOptions")} != ${value("newOptions")}`]; + const expressions = [optionValuesDiffer(goType(option), value("oldOptions"), value("newOptions"))]; + if (option.name === "paths") { + expressions.push('oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("")'); + } + return expressions; }); return `func CompilerOptionsAffect${name}(oldOptions *core.CompilerOptions, newOptions *core.CompilerOptions) bool { if oldOptions == newOptions { return false } if oldOptions == nil || newOptions == nil { return true } - return ${expressions.join(" ||\n") || "false"} + ${expressions.map(expression => `if ${expression} { return true }`).join("\n")} + return false } `; }).join("\n") @@ -796,6 +802,7 @@ function storedParser(name: string, declarations: StoredDeclaration[]): string { export function generateOptions(): Map { validateOptions(options); + const comparisons = generateOptionComparisons(); const buildOptions = options.buildOptions.filter((option): option is StoredDeclaration => option.field !== undefined); return new Map([ ["packages/typescript/src/api/compilerOptions.generated.ts", generateCompilerOptionsAPI()], @@ -846,6 +853,7 @@ ${enumMaps()} package tsoptions import ( + ${comparisons.includes("slices.") ? '"slices"\n' : ""} "github.com/microsoft/TypeScript/tsc/internal/collections" "github.com/microsoft/TypeScript/tsc/internal/core" "github.com/microsoft/TypeScript/tsc/internal/tspath" @@ -854,7 +862,7 @@ import ( ${parser()} ${storedParser("TypeAcquisition", options.typeAcquisition)} ${storedParser("BuildOptions", buildOptions)} -${generateOptionComparisons()} +${comparisons} ${generateBuildInfoOptions()} ${mergeCompilerOptions()} ${configDirSubstitution()} diff --git a/tools/scripts/tsc/options-model.ts b/tools/scripts/tsc/options-model.ts index 9a44e1b30beab..2d3e87d2777e3 100644 --- a/tools/scripts/tsc/options-model.ts +++ b/tools/scripts/tsc/options-model.ts @@ -51,7 +51,9 @@ export interface DeclarationMetadata { allowConfigDirTemplateSubstitution?: boolean; affectsDeclarationPath?: boolean; affectsSemanticDiagnostics?: boolean; + /** Required for every option participating in incremental invalidation. */ affectsBuildInfo?: boolean; + /** Changes can alter JavaScript, declarations, or declaration diagnostics. */ affectsEmit?: boolean; strictFlag?: boolean; listPreserveFalsyValues?: boolean; diff --git a/tools/scripts/tsc/options.test.ts b/tools/scripts/tsc/options.test.ts index 8d647eeb2d906..a2fdf8096c8c2 100644 --- a/tools/scripts/tsc/options.test.ts +++ b/tools/scripts/tsc/options.test.ts @@ -33,6 +33,18 @@ test("semantic diagnostic options must be stored in build info", () => { assert.throws(() => validateOptions(model), /Semantic diagnostics must affect build info: noImplicitAny/); }); +test("emit options must be stored in build info", () => { + for (const flag of ["affectsEmit", "affectsDeclarationPath"] as const) { + const model = structuredClone(options); + const declaration = model.compilerOptions.find(option => option.name === "jsxFragmentFactory")!.declaration!; + declaration.affectsSemanticDiagnostics = false; + declaration.affectsEmit = false; + declaration.affectsBuildInfo = false; + declaration[flag] = true; + assert.throws(() => validateOptions(model), /Emit options must affect build info: jsxFragmentFactory/); + } +}); + test("compiler test variations accept finite options without requiring affects metadata", () => { const source = generateOptions().get("tsc/internal/testrunner/options_generated.go")!; for (const name of ["strict", "module", "noCheck", "preserveSymlinks", "noEmit", "isolatedModules"]) { @@ -186,12 +198,22 @@ test("metadata enum artifacts are current and use the shared alias ordering", () assert.deepEqual(members, [{ name: "Value", value: "7" }, { name: "Alias", value: "Value" }]); }); -test("option comparisons reject types that require deep equality", () => { - for (const name of ["maxNodeModuleJsDepth", "types", "paths", "plugins"]) { - const model = structuredClone(options); +test("option comparisons use value equality for every stored option type", () => { + const model = structuredClone(options); + for (const name of ["maxNodeModuleJsDepth", "types", "paths", "plugins", "rootDirs"]) { model.compilerOptions.find(option => option.name === name)!.declaration!.affectsEmit = true; - assert.throws(() => generateOptionComparisons(model), new RegExp(`Unsupported comparison type for ${name}:`)); } + const source = generateOptionComparisons(model); + assert.match(source, /oldOptions.MaxNodeModuleJsDepth != newOptions.MaxNodeModuleJsDepth && \(oldOptions.MaxNodeModuleJsDepth == nil/); + for (const name of ["Types", "Plugins", "RootDirs"]) { + assert(source.includes(`(oldOptions.${name} == nil) != (newOptions.${name} == nil) || !slices.Equal(oldOptions.${name}, newOptions.${name})`)); + } + assert.match(source, /!oldOptions.Paths.EqualFunc\(newOptions.Paths, func\(a, b \[\]string\) bool/); + assert.equal(source.split('oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("")').length - 1, 2); + assert.match(source, /return \(a == nil\) == \(b == nil\) && slices.Equal\(a, b\)/); + assert.match(source, /oldOptions.GetStrictOptionValue\(oldOptions.StrictNullChecks\) != newOptions.GetStrictOptionValue\(newOptions.StrictNullChecks\)/); + assert.match(source, /if \(oldOptions.ModuleSuffixes/); + assert.doesNotMatch(source, / \|\|\noldOptions/); }); test("option section headings are detached line comments", () => { diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 0aafe5af36a28..520e8d8ae6b45 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -76,6 +76,9 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Enable importing files with any extension, provided a declaration file is present."), defaultValueDescription: false, @@ -88,6 +91,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set."), @@ -166,6 +170,9 @@ export const options: OptionsModel = { type: "[]string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Conditions to set in addition to the resolver-specific defaults when resolving imports."), }, @@ -271,6 +278,9 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "commonOptionsWithBuild", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Type Checking"), description: diagnostic("Deduplicate packages with the same name and version."), documentationAnchor: false, @@ -338,6 +348,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Type Checking"), description: diagnostic("Interpret optional property types as written, rather than adding 'undefined'."), @@ -373,6 +384,9 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Interop Constraints"), description: diagnostic("Ensure that each file can be safely transpiled without relying on other imports."), defaultValueDescription: false, @@ -389,6 +403,7 @@ export const options: OptionsModel = { defaultValueDescription: false, affectsBuildInfo: true, affectsSemanticDiagnostics: true, + affectsEmit: true, }, }, { @@ -416,6 +431,7 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Emit"), @@ -490,6 +506,9 @@ export const options: OptionsModel = { type: "string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Language and Environment"), description: diagnostic("Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'."), defaultValueDescription: "`React.createElement`", @@ -500,6 +519,9 @@ export const options: OptionsModel = { type: "string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Language and Environment"), description: diagnostic("Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'."), defaultValueDescription: "React.Fragment", @@ -569,6 +591,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", shortName: "m", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, showInSimplifiedHelpView: true, @@ -582,6 +605,9 @@ export const options: OptionsModel = { type: "ModuleResolutionKind", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Specify how TypeScript looks up a file from a given module specifier."), defaultValueDescription: diagnostic("`nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`."), @@ -592,6 +618,9 @@ export const options: OptionsModel = { type: "[]string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, listPreserveFalsyValues: true, category: diagnostic("Modules"), description: diagnostic("List of file name suffixes to search when resolving a module."), @@ -605,6 +634,9 @@ export const options: OptionsModel = { ], declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, description: diagnostic("Control what method is used to detect module-format JS files."), category: diagnostic("Language and Environment"), defaultValueDescription: diagnostic('"auto": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.'), @@ -678,6 +710,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -691,6 +724,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -753,6 +787,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Type Checking"), description: diagnostic("Add 'undefined' to a type when accessed using an index."), @@ -853,6 +888,9 @@ export const options: OptionsModel = { type: "*collections.OrderedMap[string, []string]", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, allowConfigDirTemplateSubstitution: true, isTSConfigOnly: true, category: diagnostic("Modules"), @@ -875,6 +913,7 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Emit"), @@ -921,6 +960,9 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Use the package.json 'exports' field when resolving package imports."), defaultValueDescription: diagnostic("`true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`."), @@ -931,6 +973,9 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Use the package.json 'imports' field when resolving imports."), defaultValueDescription: diagnostic("`true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`."), @@ -955,6 +1000,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Modules"), description: diagnostic("Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files."), @@ -966,6 +1012,7 @@ export const options: OptionsModel = { type: "string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Language and Environment"), @@ -995,6 +1042,9 @@ export const options: OptionsModel = { pathKind: "directory", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, isTSConfigOnly: true, allowConfigDirTemplateSubstitution: true, category: diagnostic("Modules"), @@ -1047,6 +1097,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1060,6 +1111,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1073,6 +1125,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1086,6 +1139,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1166,6 +1220,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", shortName: "t", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, showInSimplifiedHelpView: true, @@ -1205,6 +1260,9 @@ export const options: OptionsModel = { pathKind: "directory", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, allowConfigDirTemplateSubstitution: true, category: diagnostic("Modules"), description: diagnostic("Specify multiple folders that act like './node_modules/@types'."), @@ -1216,6 +1274,9 @@ export const options: OptionsModel = { type: "[]string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, + affectsEmit: true, + affectsBuildInfo: true, showInSimplifiedHelpView: true, category: diagnostic("Modules"), description: diagnostic("Specify type package names to be included without being referenced in a source file."), @@ -1240,6 +1301,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), diff --git a/tsc/internal/execute/incremental/buildInfo.go b/tsc/internal/execute/incremental/buildInfo.go index 4e248c77a64b7..95b51a6b6e408 100644 --- a/tsc/internal/execute/incremental/buildInfo.go +++ b/tsc/internal/execute/incremental/buildInfo.go @@ -470,6 +470,14 @@ func (b *BuildInfoResolvedRoot) UnmarshalJSON(data []byte) error { return nil } +type BuildInfoCompilerOptions struct { + collections.OrderedMap[string, any] +} + +func (options *BuildInfoCompilerOptions) UnmarshalJSONFrom(dec *json.Decoder) error { + return tsoptions.UnmarshalRawCompilerOptions(dec, &options.OrderedMap) +} + type BuildInfo struct { Version string `json:"version,omitzero"` @@ -482,18 +490,18 @@ type BuildInfo struct { ContentMapperIdentities []string `json:"contentMapperIdentities,omitzero"` // IncrementalProgram info - FileNames []BuildInfoPath `json:"fileNames,omitzero"` - FileInfos []*BuildInfoFileInfo `json:"fileInfos,omitzero"` - FileIdsList [][]BuildInfoFileId `json:"fileIdsList,omitzero"` - Options *collections.OrderedMap[string, any] `json:"options,omitzero"` - ReferencedMap []*BuildInfoReferenceMapEntry `json:"referencedMap,omitzero"` - SemanticDiagnosticsPerFile []*BuildInfoSemanticDiagnostic `json:"semanticDiagnosticsPerFile,omitzero"` - EmitDiagnosticsPerFile []*BuildInfoDiagnosticsOfFile `json:"emitDiagnosticsPerFile,omitzero"` - ChangeFileSet []BuildInfoFileId `json:"changeFileSet,omitzero"` - AffectedFilesPendingEmit []*BuildInfoFilePendingEmit `json:"affectedFilesPendingEmit,omitzero"` - LatestChangedDtsFile BuildInfoPath `json:"latestChangedDtsFile,omitzero"` // Because this is only output file in the program, we dont need fileId to deduplicate name - EmitSignatures []*BuildInfoEmitSignature `json:"emitSignatures,omitzero"` - ResolvedRoot []*BuildInfoResolvedRoot `json:"resolvedRoot,omitzero"` + FileNames []BuildInfoPath `json:"fileNames,omitzero"` + FileInfos []*BuildInfoFileInfo `json:"fileInfos,omitzero"` + FileIdsList [][]BuildInfoFileId `json:"fileIdsList,omitzero"` + Options *BuildInfoCompilerOptions `json:"options,omitzero"` + ReferencedMap []*BuildInfoReferenceMapEntry `json:"referencedMap,omitzero"` + SemanticDiagnosticsPerFile []*BuildInfoSemanticDiagnostic `json:"semanticDiagnosticsPerFile,omitzero"` + EmitDiagnosticsPerFile []*BuildInfoDiagnosticsOfFile `json:"emitDiagnosticsPerFile,omitzero"` + ChangeFileSet []BuildInfoFileId `json:"changeFileSet,omitzero"` + AffectedFilesPendingEmit []*BuildInfoFilePendingEmit `json:"affectedFilesPendingEmit,omitzero"` + LatestChangedDtsFile BuildInfoPath `json:"latestChangedDtsFile,omitzero"` // Because this is only output file in the program, we dont need fileId to deduplicate name + EmitSignatures []*BuildInfoEmitSignature `json:"emitSignatures,omitzero"` + ResolvedRoot []*BuildInfoResolvedRoot `json:"resolvedRoot,omitzero"` // NonIncrementalProgram info SemanticErrors bool `json:"semanticErrors,omitzero"` @@ -549,7 +557,16 @@ func (b *BuildInfo) fileInfo(fileId BuildInfoFileId) *BuildInfoFileInfo { func (b *BuildInfo) GetCompilerOptions(buildInfoDirectory tspath.RootedDirectoryPath) *core.CompilerOptions { options := &core.CompilerOptions{} + if b.Options == nil { + return options + } for option, value := range b.Options.Entries() { + if option == "pathsBasePath" { + if path := tsoptions.ParseString(value); path != "" && buildInfoDirectory != "" { + options.PathsBasePath = buildInfoDirectory.ResolveDirectory(path) + } + continue + } optionDeclaration := tsoptions.CommandLineCompilerOptionsMap.Get(option) if buildInfoDirectory == "" && optionDeclaration != nil { pathKind := optionDeclaration.PathKind diff --git a/tsc/internal/execute/incremental/buildinfo_path_test.go b/tsc/internal/execute/incremental/buildinfo_path_test.go index b3d7290d8f54a..6ee17a2881843 100644 --- a/tsc/internal/execute/incremental/buildinfo_path_test.go +++ b/tsc/internal/execute/incremental/buildinfo_path_test.go @@ -1,9 +1,11 @@ package incremental import ( + "slices" "testing" "github.com/microsoft/TypeScript/tsc/internal/json" + "github.com/microsoft/TypeScript/tsc/internal/tsoptions" "gotest.tools/v3/assert" ) @@ -34,3 +36,29 @@ func TestBuildInfoPathJSONRoundTrip(t *testing.T) { assert.DeepEqual(t, roundTripped.FileNames, buildInfo.FileNames) assert.Equal(t, roundTripped.LatestChangedDtsFile, buildInfo.LatestChangedDtsFile) } + +func TestBuildInfoCompilerOptionsJSONRoundTrip(t *testing.T) { + t.Parallel() + const input = `{"options":{"paths":{"second":["b","a"],"first":[]},"rootDirs":["./src","../generated"],"typeRoots":["./types"],"types":[],"customConditions":["custom"],"pathsBasePath":"../configs/first"}}` + var info BuildInfo + assert.NilError(t, json.Unmarshal([]byte(input), &info)) + options := info.GetCompilerOptions("/project/dist") + assert.DeepEqual(t, slices.Collect(options.Paths.Keys()), []string{"second", "first"}) + assert.DeepEqual(t, options.Paths.GetOrZero("second"), []string{"b", "a"}) + assert.DeepEqual(t, options.Paths.GetOrZero("first"), []string{}) + assert.Assert(t, options.Types != nil) + assert.Equal(t, options.RootDirs[0].AsString(), "/project/dist/src") + assert.Equal(t, options.RootDirs[1].AsString(), "/project/generated") + assert.Equal(t, options.TypeRoots[0].AsString(), "/project/dist/types") + assert.Equal(t, options.PathsBasePath.AsString(), "/project/configs/first") + assert.Equal(t, info.GetCompilerOptions("").PathsBasePath.AsString(), "") + data, err := json.Marshal(&info) + assert.NilError(t, err) + assert.Equal(t, string(data), input) + var restored BuildInfo + assert.NilError(t, json.Unmarshal(data, &restored)) + restoredOptions := restored.GetCompilerOptions("/project/dist") + assert.Assert(t, options.Equals(restoredOptions)) + assert.Assert(t, !tsoptions.CompilerOptionsAffectEmit(options, restoredOptions)) + assert.Assert(t, !tsoptions.CompilerOptionsAffectSemanticDiagnostics(options, restoredOptions)) +} diff --git a/tsc/internal/execute/incremental/buildinfotosnapshot.go b/tsc/internal/execute/incremental/buildinfotosnapshot.go index 25f6ac97aa798..2ca12cd6daf9c 100644 --- a/tsc/internal/execute/incremental/buildinfotosnapshot.go +++ b/tsc/internal/execute/incremental/buildinfotosnapshot.go @@ -19,6 +19,7 @@ func buildInfoToSnapshot(buildInfo *BuildInfo, config *tsoptions.ParsedCommandLi to.filePaths = core.Map(buildInfo.FileNames, func(fileName BuildInfoPath) tspath.PathKey { return config.CaseSensitivity().PathKey(tspath.RootedPath(ResolveBuildInfoFileName(fileName, to.buildInfoDirectory, host.DefaultLibraryPath()))) }) + to.snapshot.fileOrder = to.filePaths to.filePathSet = core.Map(buildInfo.FileIdsList, func(fileIdList []BuildInfoFileId) *collections.Set[tspath.PathKey] { fileSet := collections.NewSetWithSizeHint[tspath.PathKey](len(fileIdList)) for _, fileId := range fileIdList { diff --git a/tsc/internal/execute/incremental/emitfileshandler.go b/tsc/internal/execute/incremental/emitfileshandler.go index 36711a652bbe3..e39dd382d068e 100644 --- a/tsc/internal/execute/incremental/emitfileshandler.go +++ b/tsc/internal/execute/incremental/emitfileshandler.go @@ -208,15 +208,13 @@ func (h *emitFilesHandler) getEmitOptions(options compiler.EmitOptions) compiler if canUseIncrementalState { var emitSignature string info, _ := h.program.snapshot.fileInfos.Load(data.SourceFile.PathKey()) - if info.signature == info.version { - signature := h.program.snapshot.computeSignatureWithDiagnostics(data.SourceFile, text, data) - // With d.ts diagnostics they are also part of the signature so emitSignature will be different from it since its just hash of d.ts - if len(data.Diagnostics) == 0 { - emitSignature = signature - } - if signature != info.version { // Update it - h.signatures.Store(data.SourceFile.PathKey(), signature) - } + signature := h.program.snapshot.computeSignatureWithDiagnostics(data.SourceFile, text, data) + // With d.ts diagnostics they are also part of the signature so emitSignature will be different from it since its just hash of d.ts + if len(data.Diagnostics) == 0 { + emitSignature = signature + } + if signature != info.signature { + h.signatures.Store(data.SourceFile.PathKey(), signature) } // Store d.ts emit hash so later can be compared to check if d.ts has changed. diff --git a/tsc/internal/execute/incremental/programtosnapshot.go b/tsc/internal/execute/incremental/programtosnapshot.go index b817bc44d5b76..76a29b2d8e39a 100644 --- a/tsc/internal/execute/incremental/programtosnapshot.go +++ b/tsc/internal/execute/incremental/programtosnapshot.go @@ -21,6 +21,9 @@ func programToSnapshot(program *compiler.Program, oldProgram *Program, hashWithT options: program.Options(), hashWithText: hashWithText, checkPending: program.Options().NoCheck.IsTrue(), + fileOrder: core.Map(program.GetSourceFiles(), func(file *ast.SourceFile) tspath.PathKey { + return file.PathKey() + }), } to := &toProgramSnapshot{ program: program, @@ -31,6 +34,7 @@ func programToSnapshot(program *compiler.Program, oldProgram *Program, hashWithT if to.snapshot.canUseIncrementalState() { to.reuseFromOldProgram() to.computeProgramFileChanges() + to.handleGlobalFileOrderChange() to.handleFileDelete() to.handleGlobalScopeChange() to.handlePendingEmit() @@ -162,21 +166,56 @@ func (t *toProgramSnapshot) computeProgramFileChanges() { func (t *toProgramSnapshot) handleFileDelete() { if t.oldProgram != nil { // If the global file is removed, add all files as changed - t.oldProgram.snapshot.fileInfos.Range(func(filePath tspath.PathKey, oldInfo *FileInfo) bool { - if _, ok := t.snapshot.fileInfos.Load(filePath); !ok { - if oldInfo.affectsGlobalScope { - for _, file := range t.snapshot.getAllFilesExcludingDefaultLibraryFile(t.program, nil) { - t.snapshot.addFileToChangeSet(file.PathKey()) - } - t.globalFileRemoved = true - } else { - t.snapshot.buildInfoEmitPending.Store(true) - } - return false - } + t.oldProgram.snapshot.fileInfos.Range(t.handleDeletedFile) + } +} + +func (t *toProgramSnapshot) handleGlobalFileOrderChange() { + if t.oldProgram == nil || !globalFileOrderChanged(t.oldProgram.snapshot, t.snapshot) { + return + } + for _, file := range t.program.GetSourceFiles() { + t.snapshot.addFileToChangeSet(file.PathKey()) + t.snapshot.semanticDiagnosticsPerFile.Delete(file.PathKey()) + t.snapshot.emitDiagnosticsPerFile.Delete(file.PathKey()) + } +} + +func globalFileOrderChanged(oldSnapshot *snapshot, newSnapshot *snapshot) bool { + isSharedGlobal := func(path tspath.PathKey) bool { + oldInfo, oldOK := oldSnapshot.fileInfos.Load(path) + newInfo, newOK := newSnapshot.fileInfos.Load(path) + return oldOK && newOK && oldInfo.affectsGlobalScope && newInfo.affectsGlobalScope + } + oldIndex := 0 + for _, path := range newSnapshot.fileOrder { + if !isSharedGlobal(path) { + continue + } + for oldIndex < len(oldSnapshot.fileOrder) && !isSharedGlobal(oldSnapshot.fileOrder[oldIndex]) { + oldIndex++ + } + if oldIndex == len(oldSnapshot.fileOrder) || oldSnapshot.fileOrder[oldIndex] != path { return true - }) + } + oldIndex++ + } + return false +} + +func (t *toProgramSnapshot) handleDeletedFile(filePath tspath.PathKey, oldInfo *FileInfo) bool { + if _, ok := t.snapshot.fileInfos.Load(filePath); !ok { + if oldInfo.affectsGlobalScope { + for _, file := range t.snapshot.getAllFilesExcludingDefaultLibraryFile(t.program, nil) { + t.snapshot.addFileToChangeSet(file.PathKey()) + } + t.globalFileRemoved = true + return false + } else { + t.snapshot.buildInfoEmitPending.Store(true) + } } + return true } func (t *toProgramSnapshot) handleGlobalScopeChange() { diff --git a/tsc/internal/execute/incremental/programtosnapshot_test.go b/tsc/internal/execute/incremental/programtosnapshot_test.go new file mode 100644 index 0000000000000..12e14cdd8ae25 --- /dev/null +++ b/tsc/internal/execute/incremental/programtosnapshot_test.go @@ -0,0 +1,77 @@ +package incremental + +import ( + "testing" + + "github.com/microsoft/TypeScript/tsc/internal/ast" + "github.com/microsoft/TypeScript/tsc/internal/core" + "github.com/microsoft/TypeScript/tsc/internal/parser" + "github.com/microsoft/TypeScript/tsc/internal/tspath" + "gotest.tools/v3/assert" +) + +func TestGlobalFileDeletionAfterNonGlobalFile(t *testing.T) { + t.Parallel() + file := parser.ParseSourceFile(ast.SourceFileParseOptions{FileName: "/index.ts", PathKey: "/index.ts"}, "export {};", core.ScriptKindTS) + for _, globalFirst := range []bool{false, true} { + t.Run(core.IfElse(globalFirst, "global first", "non-global first"), func(t *testing.T) { + t.Parallel() + current := &snapshot{ + allFilesExcludingDefaultLibraryFile: []*ast.SourceFile{file}, + } + + current.allFilesExcludingDefaultLibraryFileOnce.Do(func() {}) + current.fileInfos.Store(file.PathKey(), &FileInfo{}) + to := &toProgramSnapshot{snapshot: current} + deletions := []struct { + path tspath.PathKey + info *FileInfo + }{ + {"/empty.d.ts", &FileInfo{}}, + {"/globals.d.ts", &FileInfo{affectsGlobalScope: true}}, + } + if globalFirst { + deletions[0], deletions[1] = deletions[1], deletions[0] + } + // Enumerate both possible orders without relying on SyncMap iteration order. + for _, deletion := range deletions { + if !to.handleDeletedFile(deletion.path, deletion.info) { + break + } + } + assert.Assert(t, to.globalFileRemoved) + assert.Assert(t, current.changedFilesSet.Has(file.PathKey())) + assert.Assert(t, current.buildInfoEmitPending.Load()) + }) + } +} + +func TestGlobalFileOrderChanged(t *testing.T) { + t.Parallel() + for _, test := range []struct { + name string + old []tspath.PathKey + new []tspath.PathKey + changed bool + }{ + {"unchanged", []tspath.PathKey{"/a", "/module", "/b"}, []tspath.PathKey{"/a", "/module", "/b"}, false}, + {"global reorder", []tspath.PathKey{"/a", "/module", "/b"}, []tspath.PathKey{"/b", "/module", "/a"}, true}, + {"module reorder", []tspath.PathKey{"/a", "/module", "/b"}, []tspath.PathKey{"/module", "/a", "/b"}, false}, + {"global added", []tspath.PathKey{"/a", "/b"}, []tspath.PathKey{"/a", "/new", "/b"}, false}, + {"global removed", []tspath.PathKey{"/a", "/removed", "/b"}, []tspath.PathKey{"/a", "/b"}, false}, + {"reorder with removal", []tspath.PathKey{"/a", "/removed", "/b"}, []tspath.PathKey{"/b", "/a"}, true}, + } { + t.Run(test.name, func(t *testing.T) { + t.Parallel() + old := &snapshot{fileOrder: test.old} + current := &snapshot{fileOrder: test.new} + for _, path := range test.old { + old.fileInfos.Store(path, &FileInfo{affectsGlobalScope: path != "/module"}) + } + for _, path := range test.new { + current.fileInfos.Store(path, &FileInfo{affectsGlobalScope: path != "/module"}) + } + assert.Equal(t, globalFileOrderChanged(old, current), test.changed) + }) + } +} diff --git a/tsc/internal/execute/incremental/snapshot.go b/tsc/internal/execute/incremental/snapshot.go index b4ed4a0ba0021..cb0f5c21840c1 100644 --- a/tsc/internal/execute/incremental/snapshot.go +++ b/tsc/internal/execute/incremental/snapshot.go @@ -335,6 +335,9 @@ type snapshot struct { // Additional fields that are not serialized but needed to track state + // Reconstructed from build-info fileNames when loading incremental state. + fileOrder []tspath.PathKey + // true if build info emit is pending buildInfoEmitPending atomic.Bool hasErrorsFromOldState core.Tristate diff --git a/tsc/internal/execute/incremental/snapshottobuildinfo.go b/tsc/internal/execute/incremental/snapshottobuildinfo.go index ee592a5ee505b..0e5ce74eb26c3 100644 --- a/tsc/internal/execute/incremental/snapshottobuildinfo.go +++ b/tsc/internal/execute/incremental/snapshottobuildinfo.go @@ -326,11 +326,15 @@ func (t *toBuildInfo) setCompilerOptions() { func(option *tsoptions.CommandLineOption, value any) { // Make it relative to buildInfo directory if file path if t.buildInfo.Options == nil { - t.buildInfo.Options = &collections.OrderedMap[string, any]{} + t.buildInfo.Options = &BuildInfoCompilerOptions{} } t.buildInfo.Options.Set(option.Name, t.toRelativeToBuildInfoCompilerOptionValue(option, value)) }, ) + // The inherited paths base is derived, not a declared compiler option. + if pathsBasePath := t.snapshot.options.GetPathsBasePath(""); pathsBasePath != "" { + t.buildInfo.Options.Set("pathsBasePath", t.relativeToBuildInfo(tspath.RootedPath(pathsBasePath))) + } } func (t *toBuildInfo) setReferencedMap() { diff --git a/tsc/internal/execute/tsctests/readablebuildinfo.go b/tsc/internal/execute/tsctests/readablebuildinfo.go index ad0cbd75eb762..2449ce873a2a9 100644 --- a/tsc/internal/execute/tsctests/readablebuildinfo.go +++ b/tsc/internal/execute/tsctests/readablebuildinfo.go @@ -222,13 +222,15 @@ func toReadableBuildInfo(buildInfo *incremental.BuildInfo, buildInfoText string) Errors: buildInfo.Errors, CheckPending: buildInfo.CheckPending, FileNames: buildInfoPathsAsStrings(buildInfo.FileNames), - Options: buildInfo.Options, LatestChangedDtsFile: buildInfo.LatestChangedDtsFile.AsString(), SemanticErrors: buildInfo.SemanticErrors, PackageJsons: buildInfoPathsAsStrings(buildInfo.PackageJsons), MissingPackageJsons: buildInfoPathsAsStrings(buildInfo.MissingPackageJsons), Size: len(buildInfoText), } + if buildInfo.Options != nil { + readable.Options = &buildInfo.Options.OrderedMap + } readable.setFileInfos() readable.setRoot() readable.setFileIdsList() diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 1e6c958bd396f..5ffed8518f1e8 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -2,6 +2,8 @@ package tsctests import ( "fmt" + "maps" + "path" "slices" "strconv" "strings" @@ -9,6 +11,7 @@ import ( "time" "github.com/microsoft/TypeScript/tsc/internal/core" + "github.com/microsoft/TypeScript/tsc/internal/json" "github.com/microsoft/TypeScript/tsc/internal/testutil/contentmappertest" "github.com/microsoft/TypeScript/tsc/internal/testutil/harnessutil" "github.com/microsoft/TypeScript/tsc/internal/testutil/stringtestutil" @@ -995,6 +998,621 @@ func TestBuildEmitDeclarationOnly(t *testing.T) { } } +func TestBuildExactOptionalPropertyTypes(t *testing.T) { + t.Parallel() + for _, exactOptionalPropertyTypes := range []bool{false, true} { + test := &tscInput{ + subScenario: fmt.Sprintf("declaration emit when exactOptionalPropertyTypes changes from %t to %t", exactOptionalPropertyTypes, !exactOptionalPropertyTypes), + files: FileMap{ + "/home/src/workspaces/project/producer/tsconfig.json": stringtestutil.Dedent(fmt.Sprintf(` + { + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": %t, + "composite": true, + "emitDeclarationOnly": true, + "target": "es2020", + "module": "esnext", + "lib": ["es5"], + "outDir": "dist" + }, + "files": ["index.ts"] + }`, exactOptionalPropertyTypes)), + "/home/src/workspaces/project/producer/index.ts": stringtestutil.Dedent(` + declare function make(): { value?: T }; + export const result = make();`), + "/home/src/workspaces/project/consumer/tsconfig.json": stringtestutil.Dedent(` + { + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "composite": true, + "emitDeclarationOnly": true, + "lib": ["es5"], + "outDir": "dist" + }, + "references": [{ "path": "../producer" }], + "files": ["index.ts"] + }`), + "/home/src/workspaces/project/consumer/index.ts": stringtestutil.Dedent(` + import { result } from "../producer"; + export const value: typeof result = { value: undefined };`), + }, + commandLineArgs: []string{"--build", "consumer", "--verbose"}, + edits: []*tscEdit{ + { + caption: "toggle exactOptionalPropertyTypes without changing source files", + edit: func(sys *TestSys) { + sys.replaceFileText( + "/home/src/workspaces/project/producer/tsconfig.json", + fmt.Sprintf(`"exactOptionalPropertyTypes": %t`, exactOptionalPropertyTypes), + fmt.Sprintf(`"exactOptionalPropertyTypes": %t`, !exactOptionalPropertyTypes), + ) + }, + }, + noChange, + { + caption: "force rebuild with the same compiler options", + commandLineArgs: []string{"--build", "consumer", "--verbose", "--force"}, + }, + noChange, + }, + } + test.run(t, "exactOptionalPropertyTypes") + } +} + +type compilerOptionChangeTest struct { + option string + name string + values [2]any + options map[string]any + files FileMap + roots []string +} + +func TestBuildOptionChangeShapeSignature(t *testing.T) { + t.Parallel() + for _, build := range []bool{false, true} { + args := []string{"--project", ".", "--listEmittedFiles"} + if build { + args = []string{"--build", "--verbose"} + } + test := &tscInput{ + subScenario: "source edit after changing stripInternal " + core.IfElse(build, "build", "incremental"), + cwd: "/home/src/workspaces/project", + files: FileMap{ + "/home/src/workspaces/project/tsconfig.json": `{ + "compilerOptions": { + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "strict": true, "stripInternal": true, + "outDir": "dist" + }, + "files": ["a.ts", "b.ts"] + }`, + "/home/src/workspaces/project/a.ts": "export class Result {\n /** @internal */\n value = \"\";\n}\n", + "/home/src/workspaces/project/b.ts": "import { Result } from './a';\nexport const forwarded = new Result().value;\n", + }, + commandLineArgs: args, + edits: []*tscEdit{ + { + caption: "disable stripInternal without changing source files", + edit: func(sys *TestSys) { + sys.replaceFileText("/home/src/workspaces/project/tsconfig.json", `"stripInternal": true`, `"stripInternal": false`) + }, + }, + noChange, + { + caption: "restore the original declaration shape with a source edit", + edit: func(sys *TestSys) { + sys.replaceFileText("/home/src/workspaces/project/a.ts", " /** @internal */\n value = \"\";\n", "") + }, + }, + noChange, + {caption: "force rebuild", commandLineArgs: []string{"--build", "--verbose", "--force"}}, + noChange, + }, + } + test.run(t, "compilerOptionChanges") + } +} + +func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { + t.Helper() + const project = "/home/src/workspaces/project" + for _, test := range tests { + for direction := range 2 { + for _, build := range []bool{false, true} { + name := core.IfElse(test.name != "", test.name, test.option) + mode := core.IfElse(build, "build", "incremental") + files := FileMap{} + for file, content := range test.files { + if strings.HasPrefix(file, "/") { + files[file] = content + } else { + files[path.Join(project, "producer", file)] = content + } + } + roots := test.roots + if roots == nil { + for file := range test.files { + if !strings.HasPrefix(file, "/") && !strings.HasPrefix(file, "../") && !strings.Contains(file, "node_modules/") && + (strings.HasSuffix(file, ".ts") || strings.HasSuffix(file, ".tsx") || strings.HasSuffix(file, ".js")) { + roots = append(roots, file) + } + } + slices.Sort(roots) + } + config := func(value any) string { + options := map[string]any{ + "strict": true, "target": "es2020", "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "lib": []string{"es2020"}, "rootDir": ".", "outDir": "dist", + } + maps.Copy(options, test.options) + if value == nil { + delete(options, test.option) + } else { + options[test.option] = value + } + text, err := json.Marshal(map[string]any{"compilerOptions": options, "files": roots}, json.Deterministic(true), json.WithIndent(" ")) + assert.NilError(t, err) + return string(text) + } + configPath := project + "/producer/tsconfig.json" + files[configPath] = config(test.values[direction]) + args := []string{"--project", "producer", "--listEmittedFiles"} + if build { + args = []string{"--build", "producer", "--verbose"} + } + input := &tscInput{ + subScenario: fmt.Sprintf("%s %s direction %d", name, mode, direction), + cwd: project, + files: files, + commandLineArgs: args, + edits: []*tscEdit{ + noChange, + { + caption: "change " + test.option + " without changing source files", + edit: func(sys *TestSys) { + sys.writeFileNoError(configPath, config(test.values[1-direction])) + }, + }, + noChange, + { + caption: "force rebuild with the same compiler options", + commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}, + }, + noChange, + }, + } + input.run(t, "compilerOptionChanges") + } + } + } +} + +func TestBuildModuleDetectionOptionChanges(t *testing.T) { + t.Parallel() + tests := []compilerOptionChangeTest{ + {option: "moduleDetection", name: "moduleDetection empty", values: [2]any{"legacy", "force"}, files: FileMap{"index.ts": ""}}, + {option: "moduleDetection", name: "moduleDetection comment", values: [2]any{"legacy", "force"}, files: FileMap{"index.ts": "// A file with no statements.\n"}}, + {option: "moduleDetection", name: "moduleDetection ambient module", values: [2]any{"legacy", "force"}, files: FileMap{"index.ts": "declare module 'input' { export const value: number; }\n"}}, + { + option: "moduleDetection", name: "moduleDetection CommonJS", values: [2]any{"legacy", "force"}, + options: map[string]any{"allowJs": true, "emitDeclarationOnly": false}, + files: FileMap{"index.js": "exports.value = 1;\n"}, + }, + } + testCompilerOptionChanges(t, tests) +} + +func TestBuildTypeCheckingOptionChanges(t *testing.T) { + t.Parallel() + nullable := FileMap{"index.ts": "declare const input: string | undefined;\nexport const result = input;\n"} + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + {option: "strictNullChecks", values: [2]any{false, true}, files: nullable, options: map[string]any{"strictPropertyInitialization": false}}, + {option: "strict", values: [2]any{false, true}, files: nullable}, + {option: "strict", name: "strict default", values: [2]any{nil, false}, files: nullable}, + {option: "strict", name: "strict overridden", values: [2]any{false, true}, files: nullable, options: map[string]any{"strictNullChecks": true}}, + {option: "noUncheckedIndexedAccess", values: [2]any{false, true}, files: FileMap{"index.ts": "declare const input: { [key: string]: number };\nexport const result = input.value;\n"}}, + { + option: "strictBindCallApply", values: [2]any{false, true}, + files: FileMap{ + "index.ts": "declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + getTestLibPathFor("es2020"): tscDefaultLibContent + stringtestutil.Dedent(` + interface Function { bind(thisArg: any, ...args: any[]): any; } + interface CallableFunction { + bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R; + }`), + }, + }, + { + option: "strictBuiltinIteratorReturn", values: [2]any{false, true}, + files: FileMap{ + "index.ts": "export const result = new Set().values().next().value;\n", + getTestLibPathFor("es2020"): tscDefaultLibContent + stringtestutil.Dedent(` + type BuiltinIteratorReturn = intrinsic; + interface Set { + values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } }; + } + declare const Set: { new(): Set };`), + }, + }, + {option: "useUnknownInCatchVariables", values: [2]any{false, true}, files: FileMap{"index.ts": "export function result() { try { throw 1; } catch (error) { return error; } }\n"}}, + {option: "noImplicitAny", values: [2]any{false, true}, files: FileMap{"index.ts": "export function result() { let value; value = 1; return value; }\n"}}, + {option: "noImplicitThis", values: [2]any{false, true}, files: FileMap{"index.ts": "export const result = { value: 1, get() { return this.value; } };\n"}}, + { + option: "strictFunctionTypes", values: [2]any{false, true}, + files: FileMap{"index.ts": stringtestutil.Dedent(` + interface Animal { name: string; } + interface Dog extends Animal { bark(): void; } + declare function infer(a: (value: T) => void, b: (value: T) => void): T; + declare const animal: (value: Animal) => void; + declare const dog: (value: Dog) => void; + export const result = infer(animal, dog);`)}, + }, + { + option: "strictNullChecks", name: "decorator nullability", values: [2]any{false, true}, + options: map[string]any{"strictPropertyInitialization": false, "emitDeclarationOnly": false, "experimentalDecorators": true, "emitDecoratorMetadata": true}, + files: FileMap{"index.ts": "declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n"}, + }, + }) +} + +func TestBuildModuleSuffixesOptionChanges(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "moduleSuffixes", values: [2]any{[]string{"", ".native"}, []string{".native", ""}}, + files: FileMap{ + "index.ts": "import { make } from './factory';\nexport const result = make();\n", + "factory.ts": "import { Value } from './input';\nexport function make() { return new Value(); }\n", + "input.ts": "export class Value { private field = 1; }\n", + "input.native.ts": "export class Value { private field = 2; }\n", + }, + }, + }) +} + +func TestBuildTargetOptionDiagnostics(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "target", values: [2]any{"es2015", "es2020"}, + files: FileMap{"index.ts": "export const result = 1n;\n"}, + }, + }) +} + +func TestBuildModuleOptionDiagnostics(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "module", name: "module top-level await", values: [2]any{"esnext", "commonjs"}, + files: FileMap{"index.ts": "export const result = await 1;\n"}, + }, + { + option: "module", name: "module import attributes", values: [2]any{"esnext", "commonjs"}, + roots: []string{"index.ts", "data.json"}, + files: FileMap{ + "index.ts": "import value from './data.json' with { type: 'json' };\nexport { value };\n", + "data.json": `{"value":1}`, + }, + }, + }) +} + +func TestBuildImportHelpersOptionDiagnostics(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "importHelpers", values: [2]any{false, true}, + options: map[string]any{"target": "es2015", "emitDeclarationOnly": false}, + files: FileMap{ + "index.ts": "export async function result() { return 1; }\n", + getTestLibPathFor("es2020"): tscDefaultLibContent + "\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + }, + }, + }) +} + +func TestBuildReactNamespaceOptionDiagnostics(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "reactNamespace", values: [2]any{"React", "Other"}, + options: map[string]any{"jsx": "react"}, + files: FileMap{"index.tsx": stringtestutil.Dedent(` + declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } + } + export const result =
;`)}, + }, + }) +} + +func TestBuildPreserveConstEnumsOptionDiagnostics(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "preserveConstEnums", name: "preserveConstEnums namespace order", values: [2]any{false, true}, + files: FileMap{"index.ts": "export namespace Value { export const enum Field { One } }\nexport class Value {}\n"}, + }, + { + option: "preserveConstEnums", name: "preserveConstEnums namespace merge", values: [2]any{false, true}, + options: map[string]any{"moduleDetection": "legacy"}, + files: FileMap{ + "index.ts": "namespace Value { export const enum Field { One } }\n", + "other.ts": "class Value {}\n", + }, + }, + }) +} + +func TestBuildLibOrderOptionChanges(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "lib", values: [2]any{[]string{"es5", "es2015.symbol"}, []string{"es2015.symbol", "es5"}}, + options: map[string]any{"libReplacement": true}, + roots: []string{"index.ts"}, + files: FileMap{ + "index.ts": "export const result = input();\n", + "node_modules/@typescript/lib-es5/package.json": `{"name":"@typescript/lib-es5","types":"index.d.ts"}`, + "node_modules/@typescript/lib-es5/index.d.ts": tscDefaultLibContent + "\ndeclare function input(): 'first';\n", + "node_modules/@typescript/lib-es2015/package.json": `{"name":"@typescript/lib-es2015"}`, + "node_modules/@typescript/lib-es2015/symbol.d.ts": "/// \ndeclare function input(): 'second';\n", + }, + }, + { + option: "lib", name: "bundled lib order", values: [2]any{[]string{"es5", "es2015.symbol"}, []string{"es2015.symbol", "es5"}}, + files: FileMap{ + "index.ts": "export const result = input();\n", + getTestLibPathFor("es5"): tscDefaultLibContent + "\ndeclare function input(): 'first';\n", + getTestLibPathFor("es2015.symbol"): "/// \ndeclare function input(): 'second';\n", + }, + }, + }) +} + +func TestBuildNoLibOptionChanges(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + { + option: "noLib", values: [2]any{false, true}, + options: map[string]any{"lib": nil}, + files: FileMap{ + "index.ts": "export const result = input();\n", + "globals.d.ts": "interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + getTestLibPathFor("es2020.full"): tscDefaultLibContent + "\ndeclare function input(): 'library';\n", + }, + }, + }) +} + +func TestBuildEmitOptionChanges(t *testing.T) { + t.Parallel() + testCompilerOptionChanges(t, []compilerOptionChangeTest{ + {option: "isolatedDeclarations", values: [2]any{false, true}, files: FileMap{"index.ts": "export const result = 1 + 2;\n"}}, + { + option: "jsxFactory", values: [2]any{"A.create", "B.create"}, options: map[string]any{"jsx": "react"}, + files: FileMap{"index.tsx": stringtestutil.Dedent(` + declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } } + declare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } } + export const result =
;`)}, + }, + { + option: "jsxFragmentFactory", values: [2]any{"A.Fragment", "B.Fragment"}, + options: map[string]any{"jsx": "react", "jsxFactory": "A.create", "emitDeclarationOnly": false}, + files: FileMap{"index.tsx": stringtestutil.Dedent(` + declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } } + declare namespace B { const Fragment: any; } + export const result = <>
;`)}, + }, + { + option: "isolatedModules", values: [2]any{false, true}, options: map[string]any{"emitDeclarationOnly": false}, + files: FileMap{"index.ts": "const enum Value { Result = 1 }\nexport const result = Value.Result;\n"}, + }, + { + option: "isolatedModules", name: "isolatedModules preserveConstEnums", values: [2]any{false, true}, + options: map[string]any{"emitDeclarationOnly": false, "preserveConstEnums": true}, + files: FileMap{"index.ts": "const enum Value { Result = 1 }\nexport const result = Value.Result;\n"}, + }, + { + option: "rewriteRelativeImportExtensions", values: [2]any{false, true}, + options: map[string]any{"emitDeclarationOnly": false, "allowImportingTsExtensions": true}, + files: FileMap{"index.ts": "export { result } from './other.ts';\n", "other.ts": "export const result = 1;\n"}, + }, + { + option: "rewriteRelativeImportExtensions", name: "rewriteRelativeImportExtensions inferred imports", values: [2]any{false, true}, + files: FileMap{ + "package.json": `{"type":"module"}`, + "index.ts": "import { make } from './factory.js';\nexport const result = make();\n", + "factory.ts": "import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "thing.ts": "export class Thing { private field = 1; }\n", + }, + options: map[string]any{"module": "nodenext", "moduleResolution": "nodenext"}, + }, + { + option: "allowImportingTsExtensions", values: [2]any{false, true}, + options: map[string]any{"module": "nodenext", "moduleResolution": "nodenext"}, + files: FileMap{ + "package.json": `{"type":"module"}`, + "index.ts": "import { make } from './factory.js';\nexport const result = make();\n", + "factory.ts": "import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "thing.ts": "export class Thing { private field = 1; }\n", + }, + }, + }) +} + +func TestBuildResolutionOptionChanges(t *testing.T) { + t.Parallel() + tests := []compilerOptionChangeTest{ + { + option: "paths", values: [2]any{map[string][]string{"short": {"../external/thing.ts"}}, map[string][]string{"renamed": {"../external/thing.ts"}}}, + options: map[string]any{"rootDir": ".."}, roots: []string{"index.ts"}, + files: FileMap{ + "index.ts": "import { make } from '../external/factory';\nexport const result = make();\n", + "../external/factory.ts": "import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "../external/thing.ts": "export class Thing { private field = 1; }\n", + }, + }, + { + option: "resolvePackageJsonImports", values: [2]any{false, true}, + options: map[string]any{"rootDir": ".."}, roots: []string{"index.ts"}, + files: FileMap{ + "../package.json": `{"imports":{"#thing":"./external/thing.ts"}}`, + "index.ts": "import { make } from '../external/factory';\nexport const result = make();\n", + "../external/factory.ts": "import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "../external/thing.ts": "export class Thing { private field = 1; }\n", + }, + }, + { + option: "customConditions", values: [2]any{[]string{}, []string{"custom"}}, roots: []string{"index.ts", "factory.ts"}, + files: FileMap{ + "index.ts": "import { make } from './factory';\nexport const result = make();\n", + "factory.ts": "import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "node_modules/fixture/deep/nested/thing.d.ts": "export class Thing { private field; }\n", + "node_modules/fixture/unused.d.ts": "export {};\n", + "node_modules/fixture/package.json": `{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}}`, + }, + }, + { + option: "resolvePackageJsonExports", values: [2]any{false, true}, roots: []string{"index.ts", "factory.ts"}, + files: FileMap{ + "index.ts": "import { make } from './factory';\nexport const result = make();\n", + "factory.ts": "import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "node_modules/fixture/deep/nested/thing.d.ts": "export class Thing { private field; }\n", + "node_modules/fixture/package.json": `{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}}`, + }, + }, + { + option: "rootDirs", values: [2]any{[]string{}, []string{"./src", "./generated"}}, + files: FileMap{ + "src/index.ts": "import { make } from '../generated/factory';\nexport const result = make();\n", + "generated/factory.ts": "import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "generated/thing.ts": "export class Thing { private field = 1; }\n", + }, + }, + { + option: "moduleResolution", values: [2]any{"node16", "nodenext"}, + options: map[string]any{"module": "nodenext", "rootDir": ".."}, roots: []string{"index.ts"}, + files: FileMap{ + "../package.json": `{"imports":{"#/thing":"./external/thing.ts"}}`, + "index.ts": "import { make } from '../external/factory';\nexport const result = make();\n", + "../external/factory.ts": "import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "../external/thing.ts": "export class Thing { private field = 1; }\n", + }, + }, + { + option: "types", values: [2]any{[]string{"first", "second"}, []string{"second", "first"}}, roots: []string{"index.ts"}, + files: FileMap{ + "index.ts": "export const result = input();\n", + "node_modules/@types/first/index.d.ts": "declare function input(): 'first';\n", + "node_modules/@types/second/index.d.ts": "declare function input(): 'second';\n", + }, + }, + { + option: "typeRoots", values: [2]any{[]string{"./types-a", "./types-b"}, []string{"./types-b", "./types-a"}}, + options: map[string]any{"types": []string{"*"}}, roots: []string{"index.ts"}, + files: FileMap{ + "index.ts": "export const result = input();\n", + "types-a/first/index.d.ts": "declare function input(): 'first';\n", + "types-b/second/index.d.ts": "declare function input(): 'second';\n", + }, + }, + { + option: "allowArbitraryExtensions", values: [2]any{false, true}, + files: FileMap{ + "index.ts": "import { input } from './styles.css';\nexport const result = input;\n", + "styles.d.css.ts": "export declare const input: { value: string };\n", + }, + }, + { + option: "deduplicatePackages", values: [2]any{false, true}, roots: []string{"index.ts"}, + files: FileMap{ + "index.ts": "import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "node_modules/first/package.json": `{"name":"first","version":"1.0.0","types":"index.d.ts"}`, + "node_modules/first/index.d.ts": "export { input } from 'dependency';\n", + "node_modules/first/node_modules/dependency/package.json": `{"name":"dependency","version":"1.0.0","types":"index.d.ts"}`, + "node_modules/first/node_modules/dependency/index.d.ts": "export const input: 'first';\n", + "node_modules/second/package.json": `{"name":"second","version":"1.0.0","types":"index.d.ts"}`, + "node_modules/second/index.d.ts": "export { input } from 'dependency';\n", + "node_modules/second/node_modules/dependency/package.json": `{"name":"dependency","version":"1.0.0","types":"index.d.ts"}`, + "node_modules/second/node_modules/dependency/index.d.ts": "export const input: 'second';\n", + }, + }, + } + for _, test := range slices.Clone(tests) { + switch test.option { + case "paths", "rootDirs", "customConditions": + test.values[0] = nil + case "moduleResolution", "resolvePackageJsonExports", "resolvePackageJsonImports": + test.values = [2]any{nil, test.values[0]} + default: + continue + } + test.name = test.option + " unset" + tests = append(tests, test) + } + testCompilerOptionChanges(t, tests) +} + +func TestBuildInheritedPathsBasePath(t *testing.T) { + t.Parallel() + const project = "/home/src/workspaces/project" + for _, build := range []bool{false, true} { + for _, initialBase := range []string{"first", "second"} { + nextBase := core.IfElse(initialBase == "first", "second", "first") + config := func(base string) string { + return fmt.Sprintf(`{ + "extends": "../configs/%s/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + }`, base) + } + args := []string{"--project", "producer", "--listEmittedFiles"} + if build { + args = []string{"--build", "producer", "--verbose"} + } + test := &tscInput{ + subScenario: "inherited paths base " + initialBase + " to " + nextBase + " " + core.IfElse(build, "build", "incremental"), + cwd: project, + files: FileMap{ + project + "/producer/tsconfig.json": config(initialBase), + project + "/configs/first/base.json": `{"compilerOptions":{"paths":{"short":["./thing.ts"]}}}`, + project + "/configs/second/base.json": `{"compilerOptions":{"paths":{"short":["./thing.ts"]}}}`, + project + "/configs/first/thing.ts": "export class Thing { private field = 1; }\n", + project + "/configs/second/thing.ts": "export class Thing { private field = 2; }\n", + project + "/producer/factory.ts": "import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + project + "/producer/index.ts": "import { make } from './factory';\nexport const result = make();\n", + }, + commandLineArgs: args, + edits: []*tscEdit{ + noChange, + { + caption: "change extends without changing paths or source files", + edit: func(sys *TestSys) { + sys.writeFileNoError(project+"/producer/tsconfig.json", config(nextBase)) + }, + }, + noChange, + {caption: "force rebuild", commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}}, + noChange, + }, + } + test.run(t, "compilerOptionChanges") + } + } +} + func TestBuildFileDelete(t *testing.T) { t.Parallel() testCases := []*tscInput{ diff --git a/tsc/internal/tsoptions/compileroptions_test.go b/tsc/internal/tsoptions/compileroptions_test.go index 0b6be993efada..44598c6e9410d 100644 --- a/tsc/internal/tsoptions/compileroptions_test.go +++ b/tsc/internal/tsoptions/compileroptions_test.go @@ -261,6 +261,99 @@ func compilerOptionTestValues(t *testing.T, field reflect.StructField) []reflect return values } +func TestCompilerOptionInvalidationComparisons(t *testing.T) { + t.Parallel() + for _, name := range []string{"CustomConditions", "Paths", "RootDirs", "TypeRoots", "Types"} { + field, ok := reflect.TypeFor[core.CompilerOptions]().FieldByName(name) + if !ok { + t.Fatal("Missing compiler option", name) + } + values := compilerOptionTestValues(t, field) + if field.Type.Kind() == reflect.Slice { + for _, entries := range [][]string{{"/first", "/second"}, {"/first", "/second"}, {"/second", "/first"}} { + value := reflect.MakeSlice(field.Type, len(entries), len(entries)) + for i, entry := range entries { + value.Index(i).Set(reflect.ValueOf(entry).Convert(field.Type.Elem())) + } + values = append(values, value) + } + } else { + for _, entries := range [][]string{nil, {}, {"first", "second"}, {"second", "first"}} { + for _, keys := range [][]string{{"a", "b"}, {"b", "a"}} { + paths := &collections.OrderedMap[string, []string]{} + for _, key := range keys { + paths.Set(key, entries) + } + values = append(values, reflect.ValueOf(paths), reflect.ValueOf(paths.Clone())) + } + } + values = append(values, reflect.ValueOf(collections.NewOrderedMapWithSizeHint[string, []string](0))) + } + t.Run(name, func(t *testing.T) { + t.Parallel() + for _, aValue := range values { + for _, bValue := range values { + a, b := &core.CompilerOptions{}, &core.CompilerOptions{} + reflect.ValueOf(a).Elem().FieldByIndex(field.Index).Set(aValue) + reflect.ValueOf(b).Elem().FieldByIndex(field.Index).Set(bValue) + want := !a.Equals(b) + if got := CompilerOptionsAffectEmit(a, b); got != want { + t.Fatalf("Emit comparison got %v, want %v for %v and %v", got, want, aValue, bValue) + } + if got := CompilerOptionsAffectSemanticDiagnostics(a, b); got != want { + t.Fatalf("Diagnostics comparison got %v, want %v for %v and %v", got, want, aValue, bValue) + } + } + } + }) + } +} + +func TestCompilerOptionInvalidationPathsBasePath(t *testing.T) { + t.Parallel() + emptyPaths := &collections.OrderedMap[string, []string]{} + paths := &collections.OrderedMap[string, []string]{} + paths.Set("short", []string{"./thing.ts"}) + for _, paths := range []*collections.OrderedMap[string, []string]{nil, emptyPaths, paths} { + a := &core.CompilerOptions{Paths: paths, PathsBasePath: "/first"} + b := &core.CompilerOptions{Paths: paths, PathsBasePath: "/second"} + want := paths.Size() != 0 + if got := CompilerOptionsAffectEmit(a, b); got != want { + t.Fatalf("Emit comparison got %v, want %v for paths %v", got, want, paths) + } + if got := CompilerOptionsAffectSemanticDiagnostics(a, b); got != want { + t.Fatalf("Diagnostics comparison got %v, want %v for paths %v", got, want, paths) + } + if CompilerOptionsAffectEmit(a, a.Clone()) || CompilerOptionsAffectSemanticDiagnostics(a, a.Clone()) { + t.Fatal("Equal paths and base directories must not invalidate cached results") + } + } +} + +func TestCompilerOptionInvalidationStrictDefaults(t *testing.T) { + t.Parallel() + a := &core.CompilerOptions{} + b := &core.CompilerOptions{Strict: core.TSTrue} + if CompilerOptionsAffectEmit(a, b) || CompilerOptionsAffectSemanticDiagnostics(a, b) { + t.Fatal("Explicitly enabling the default strict mode must not invalidate cached results") + } + b.Strict = core.TSFalse + if !CompilerOptionsAffectEmit(a, b) || !CompilerOptionsAffectSemanticDiagnostics(a, b) { + t.Fatal("Disabling implied strict options must invalidate cached results") + } + a = &core.CompilerOptions{ + Strict: core.TSFalse, NoImplicitAny: core.TSFalse, NoImplicitThis: core.TSFalse, + StrictBindCallApply: core.TSFalse, StrictBuiltinIteratorReturn: core.TSFalse, + StrictFunctionTypes: core.TSFalse, StrictNullChecks: core.TSTrue, + StrictPropertyInitialization: core.TSFalse, UseUnknownInCatchVariables: core.TSFalse, + } + b = a.Clone() + b.Strict = core.TSTrue + if CompilerOptionsAffectEmit(a, b) || CompilerOptionsAffectSemanticDiagnostics(a, b) { + t.Fatal("Changing strict must respect explicit overrides of its suboptions") + } +} + func TestCompilerOptionConfigDirSubstitution(t *testing.T) { t.Parallel() diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 975913279a80c..a05310e2a2c3f 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -3,6 +3,8 @@ package tsoptions import ( + "slices" + "github.com/microsoft/TypeScript/tsc/internal/collections" "github.com/microsoft/TypeScript/tsc/internal/core" "github.com/microsoft/TypeScript/tsc/internal/tspath" @@ -372,42 +374,180 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions || - oldOptions.AllowUmdGlobalAccess != newOptions.AllowUmdGlobalAccess || - oldOptions.AllowUnreachableCode != newOptions.AllowUnreachableCode || - oldOptions.AllowUnusedLabels != newOptions.AllowUnusedLabels || - oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies || - oldOptions.CheckJs != newOptions.CheckJs || - oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || - oldOptions.ErasableSyntaxOnly != newOptions.ErasableSyntaxOnly || - oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes || - oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || - oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations || - oldOptions.Jsx != newOptions.Jsx || - oldOptions.JsxImportSource != newOptions.JsxImportSource || - oldOptions.NoErrorTruncation != newOptions.NoErrorTruncation || - oldOptions.NoFallthroughCasesInSwitch != newOptions.NoFallthroughCasesInSwitch || - oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || - oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) || - oldOptions.NoImplicitReturns != newOptions.NoImplicitReturns || - oldOptions.NoPropertyAccessFromIndexSignature != newOptions.NoPropertyAccessFromIndexSignature || - oldOptions.NoUncheckedIndexedAccess != newOptions.NoUncheckedIndexedAccess || - oldOptions.NoUnusedLocals != newOptions.NoUnusedLocals || - oldOptions.NoUnusedParameters != newOptions.NoUnusedParameters || - oldOptions.NoImplicitOverride != newOptions.NoImplicitOverride || - oldOptions.NoUncheckedSideEffectImports != newOptions.NoUncheckedSideEffectImports || - oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || - oldOptions.StableTypeOrdering != newOptions.StableTypeOrdering || - oldOptions.GetStrictOptionValue(oldOptions.StrictBindCallApply) != newOptions.GetStrictOptionValue(newOptions.StrictBindCallApply) || - oldOptions.GetStrictOptionValue(oldOptions.StrictBuiltinIteratorReturn) != newOptions.GetStrictOptionValue(newOptions.StrictBuiltinIteratorReturn) || - oldOptions.GetStrictOptionValue(oldOptions.StrictFunctionTypes) != newOptions.GetStrictOptionValue(newOptions.StrictFunctionTypes) || - oldOptions.GetStrictOptionValue(oldOptions.StrictNullChecks) != newOptions.GetStrictOptionValue(newOptions.StrictNullChecks) || - oldOptions.GetStrictOptionValue(oldOptions.StrictPropertyInitialization) != newOptions.GetStrictOptionValue(newOptions.StrictPropertyInitialization) || - oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields || - oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) || - oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax || - oldOptions.AllowSyntheticDefaultImports != newOptions.AllowSyntheticDefaultImports || - oldOptions.ESModuleInterop != newOptions.ESModuleInterop + if oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions { + return true + } + if oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions { + return true + } + if oldOptions.AllowUmdGlobalAccess != newOptions.AllowUmdGlobalAccess { + return true + } + if oldOptions.AllowUnreachableCode != newOptions.AllowUnreachableCode { + return true + } + if oldOptions.AllowUnusedLabels != newOptions.AllowUnusedLabels { + return true + } + if oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies { + return true + } + if oldOptions.CheckJs != newOptions.CheckJs { + return true + } + if (oldOptions.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) { + return true + } + if oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata { + return true + } + if oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages { + return true + } + if oldOptions.ErasableSyntaxOnly != newOptions.ErasableSyntaxOnly { + return true + } + if oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes { + return true + } + if oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators { + return true + } + if oldOptions.IsolatedModules != newOptions.IsolatedModules { + return true + } + if oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations { + return true + } + if oldOptions.ImportHelpers != newOptions.ImportHelpers { + return true + } + if oldOptions.Jsx != newOptions.Jsx { + return true + } + if oldOptions.JsxFactory != newOptions.JsxFactory { + return true + } + if oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory { + return true + } + if oldOptions.JsxImportSource != newOptions.JsxImportSource { + return true + } + if oldOptions.Module != newOptions.Module { + return true + } + if oldOptions.ModuleResolution != newOptions.ModuleResolution { + return true + } + if (oldOptions.ModuleSuffixes == nil) != (newOptions.ModuleSuffixes == nil) || !slices.Equal(oldOptions.ModuleSuffixes, newOptions.ModuleSuffixes) { + return true + } + if oldOptions.ModuleDetection != newOptions.ModuleDetection { + return true + } + if oldOptions.NoErrorTruncation != newOptions.NoErrorTruncation { + return true + } + if oldOptions.NoFallthroughCasesInSwitch != newOptions.NoFallthroughCasesInSwitch { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) { + return true + } + if oldOptions.NoImplicitReturns != newOptions.NoImplicitReturns { + return true + } + if oldOptions.NoPropertyAccessFromIndexSignature != newOptions.NoPropertyAccessFromIndexSignature { + return true + } + if oldOptions.NoUncheckedIndexedAccess != newOptions.NoUncheckedIndexedAccess { + return true + } + if oldOptions.NoUnusedLocals != newOptions.NoUnusedLocals { + return true + } + if oldOptions.NoUnusedParameters != newOptions.NoUnusedParameters { + return true + } + if oldOptions.NoImplicitOverride != newOptions.NoImplicitOverride { + return true + } + if oldOptions.NoUncheckedSideEffectImports != newOptions.NoUncheckedSideEffectImports { + return true + } + if !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { + return (a == nil) == (b == nil) && slices.Equal(a, b) + }) { + return true + } + if oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") { + return true + } + if oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums { + return true + } + if oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports { + return true + } + if oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports { + return true + } + if oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions { + return true + } + if oldOptions.ReactNamespace != newOptions.ReactNamespace { + return true + } + if (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) { + return true + } + if oldOptions.StableTypeOrdering != newOptions.StableTypeOrdering { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictBindCallApply) != newOptions.GetStrictOptionValue(newOptions.StrictBindCallApply) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictBuiltinIteratorReturn) != newOptions.GetStrictOptionValue(newOptions.StrictBuiltinIteratorReturn) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictFunctionTypes) != newOptions.GetStrictOptionValue(newOptions.StrictFunctionTypes) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictNullChecks) != newOptions.GetStrictOptionValue(newOptions.StrictNullChecks) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictPropertyInitialization) != newOptions.GetStrictOptionValue(newOptions.StrictPropertyInitialization) { + return true + } + if oldOptions.Target != newOptions.Target { + return true + } + if (oldOptions.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) { + return true + } + if (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) { + return true + } + if oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) { + return true + } + if oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax { + return true + } + if oldOptions.AllowSyntheticDefaultImports != newOptions.AllowSyntheticDefaultImports { + return true + } + if oldOptions.ESModuleInterop != newOptions.ESModuleInterop { + return true + } + return false } func CompilerOptionsAffectDeclarationPath(oldOptions *core.CompilerOptions, newOptions *core.CompilerOptions) bool { @@ -417,10 +557,19 @@ func CompilerOptionsAffectDeclarationPath(oldOptions *core.CompilerOptions, newO if oldOptions == nil || newOptions == nil { return true } - return oldOptions.DeclarationDir != newOptions.DeclarationDir || - oldOptions.OutDir != newOptions.OutDir || - oldOptions.RootDir != newOptions.RootDir || - oldOptions.OutFile != newOptions.OutFile + if oldOptions.DeclarationDir != newOptions.DeclarationDir { + return true + } + if oldOptions.OutDir != newOptions.OutDir { + return true + } + if oldOptions.RootDir != newOptions.RootDir { + return true + } + if oldOptions.OutFile != newOptions.OutFile { + return true + } + return false } func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *core.CompilerOptions) bool { @@ -430,35 +579,180 @@ func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *cor if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies || - oldOptions.EmitBOM != newOptions.EmitBOM || - oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || - oldOptions.DeclarationDir != newOptions.DeclarationDir || - oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || - oldOptions.ImportHelpers != newOptions.ImportHelpers || - oldOptions.InlineSources != newOptions.InlineSources || - oldOptions.Jsx != newOptions.Jsx || - oldOptions.JsxImportSource != newOptions.JsxImportSource || - oldOptions.MapRoot != newOptions.MapRoot || - oldOptions.Module != newOptions.Module || - oldOptions.NewLine != newOptions.NewLine || - oldOptions.NoEmitHelpers != newOptions.NoEmitHelpers || - oldOptions.NoEmitOnError != newOptions.NoEmitOnError || - oldOptions.OutDir != newOptions.OutDir || - oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums || - oldOptions.RemoveComments != newOptions.RemoveComments || - oldOptions.ReactNamespace != newOptions.ReactNamespace || - oldOptions.RootDir != newOptions.RootDir || - oldOptions.StripInternal != newOptions.StripInternal || - oldOptions.SourceRoot != newOptions.SourceRoot || - oldOptions.Target != newOptions.Target || - oldOptions.TsBuildInfoFile != newOptions.TsBuildInfoFile || - oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields || - oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax || - oldOptions.AlwaysStrict != newOptions.AlwaysStrict || - oldOptions.DownlevelIteration != newOptions.DownlevelIteration || - oldOptions.ESModuleInterop != newOptions.ESModuleInterop || - oldOptions.OutFile != newOptions.OutFile + if oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions { + return true + } + if oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions { + return true + } + if oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies { + return true + } + if (oldOptions.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) { + return true + } + if oldOptions.EmitBOM != newOptions.EmitBOM { + return true + } + if oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata { + return true + } + if oldOptions.DeclarationDir != newOptions.DeclarationDir { + return true + } + if oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages { + return true + } + if oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes { + return true + } + if oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators { + return true + } + if oldOptions.IsolatedModules != newOptions.IsolatedModules { + return true + } + if oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations { + return true + } + if oldOptions.ImportHelpers != newOptions.ImportHelpers { + return true + } + if oldOptions.InlineSources != newOptions.InlineSources { + return true + } + if oldOptions.Jsx != newOptions.Jsx { + return true + } + if oldOptions.JsxFactory != newOptions.JsxFactory { + return true + } + if oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory { + return true + } + if oldOptions.JsxImportSource != newOptions.JsxImportSource { + return true + } + if oldOptions.MapRoot != newOptions.MapRoot { + return true + } + if oldOptions.Module != newOptions.Module { + return true + } + if oldOptions.ModuleResolution != newOptions.ModuleResolution { + return true + } + if (oldOptions.ModuleSuffixes == nil) != (newOptions.ModuleSuffixes == nil) || !slices.Equal(oldOptions.ModuleSuffixes, newOptions.ModuleSuffixes) { + return true + } + if oldOptions.ModuleDetection != newOptions.ModuleDetection { + return true + } + if oldOptions.NewLine != newOptions.NewLine { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) { + return true + } + if oldOptions.NoEmitHelpers != newOptions.NoEmitHelpers { + return true + } + if oldOptions.NoUncheckedIndexedAccess != newOptions.NoUncheckedIndexedAccess { + return true + } + if oldOptions.NoEmitOnError != newOptions.NoEmitOnError { + return true + } + if oldOptions.OutDir != newOptions.OutDir { + return true + } + if !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { + return (a == nil) == (b == nil) && slices.Equal(a, b) + }) { + return true + } + if oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") { + return true + } + if oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums { + return true + } + if oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports { + return true + } + if oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports { + return true + } + if oldOptions.RemoveComments != newOptions.RemoveComments { + return true + } + if oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions { + return true + } + if oldOptions.ReactNamespace != newOptions.ReactNamespace { + return true + } + if oldOptions.RootDir != newOptions.RootDir { + return true + } + if (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictBindCallApply) != newOptions.GetStrictOptionValue(newOptions.StrictBindCallApply) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictBuiltinIteratorReturn) != newOptions.GetStrictOptionValue(newOptions.StrictBuiltinIteratorReturn) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictFunctionTypes) != newOptions.GetStrictOptionValue(newOptions.StrictFunctionTypes) { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.StrictNullChecks) != newOptions.GetStrictOptionValue(newOptions.StrictNullChecks) { + return true + } + if oldOptions.StripInternal != newOptions.StripInternal { + return true + } + if oldOptions.SourceRoot != newOptions.SourceRoot { + return true + } + if oldOptions.Target != newOptions.Target { + return true + } + if oldOptions.TsBuildInfoFile != newOptions.TsBuildInfoFile { + return true + } + if (oldOptions.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) { + return true + } + if (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) { + return true + } + if oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields { + return true + } + if oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) { + return true + } + if oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax { + return true + } + if oldOptions.AlwaysStrict != newOptions.AlwaysStrict { + return true + } + if oldOptions.DownlevelIteration != newOptions.DownlevelIteration { + return true + } + if oldOptions.ESModuleInterop != newOptions.ESModuleInterop { + return true + } + if oldOptions.OutFile != newOptions.OutFile { + return true + } + return false } // ForEachCompilerOptionAffectingBuildInfo visits nonzero options in CompilerOptions field order. @@ -466,6 +760,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.AllowJs != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("allowJs"), options.AllowJs) } + if options.AllowArbitraryExtensions != core.TSUnknown { + fn(CommandLineCompilerOptionsMap.Get("allowArbitraryExtensions"), options.AllowArbitraryExtensions) + } if options.AllowImportingTsExtensions != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("allowImportingTsExtensions"), options.AllowImportingTsExtensions) } @@ -484,6 +781,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.CheckJs != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("checkJs"), options.CheckJs) } + if options.CustomConditions != nil { + fn(CommandLineCompilerOptionsMap.Get("customConditions"), options.CustomConditions) + } if options.Composite != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("composite"), options.Composite) } @@ -505,6 +805,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.DeclarationMap != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("declarationMap"), options.DeclarationMap) } + if options.DeduplicatePackages != core.TSUnknown { + fn(CommandLineCompilerOptionsMap.Get("deduplicatePackages"), options.DeduplicatePackages) + } if options.ErasableSyntaxOnly != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("erasableSyntaxOnly"), options.ErasableSyntaxOnly) } @@ -514,6 +817,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.ExperimentalDecorators != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("experimentalDecorators"), options.ExperimentalDecorators) } + if options.IsolatedModules != core.TSUnknown { + fn(CommandLineCompilerOptionsMap.Get("isolatedModules"), options.IsolatedModules) + } if options.IsolatedDeclarations != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("isolatedDeclarations"), options.IsolatedDeclarations) } @@ -529,6 +835,12 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.Jsx != 0 { fn(CommandLineCompilerOptionsMap.Get("jsx"), options.Jsx) } + if options.JsxFactory != "" { + fn(CommandLineCompilerOptionsMap.Get("jsxFactory"), options.JsxFactory) + } + if options.JsxFragmentFactory != "" { + fn(CommandLineCompilerOptionsMap.Get("jsxFragmentFactory"), options.JsxFragmentFactory) + } if options.JsxImportSource != "" { fn(CommandLineCompilerOptionsMap.Get("jsxImportSource"), options.JsxImportSource) } @@ -538,6 +850,15 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.Module != 0 { fn(CommandLineCompilerOptionsMap.Get("module"), options.Module) } + if options.ModuleResolution != 0 { + fn(CommandLineCompilerOptionsMap.Get("moduleResolution"), options.ModuleResolution) + } + if options.ModuleSuffixes != nil { + fn(CommandLineCompilerOptionsMap.Get("moduleSuffixes"), options.ModuleSuffixes) + } + if options.ModuleDetection != 0 { + fn(CommandLineCompilerOptionsMap.Get("moduleDetection"), options.ModuleDetection) + } if options.NewLine != 0 { fn(CommandLineCompilerOptionsMap.Get("newLine"), options.NewLine) } @@ -583,9 +904,18 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.OutDir != "" { fn(CommandLineCompilerOptionsMap.Get("outDir"), options.OutDir) } + if options.Paths != nil { + fn(CommandLineCompilerOptionsMap.Get("paths"), options.Paths) + } if options.PreserveConstEnums != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("preserveConstEnums"), options.PreserveConstEnums) } + if options.ResolvePackageJsonExports != core.TSUnknown { + fn(CommandLineCompilerOptionsMap.Get("resolvePackageJsonExports"), options.ResolvePackageJsonExports) + } + if options.ResolvePackageJsonImports != core.TSUnknown { + fn(CommandLineCompilerOptionsMap.Get("resolvePackageJsonImports"), options.ResolvePackageJsonImports) + } if options.RemoveComments != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("removeComments"), options.RemoveComments) } @@ -598,6 +928,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.RootDir != "" { fn(CommandLineCompilerOptionsMap.Get("rootDir"), options.RootDir) } + if options.RootDirs != nil { + fn(CommandLineCompilerOptionsMap.Get("rootDirs"), options.RootDirs) + } if options.SkipLibCheck != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("skipLibCheck"), options.SkipLibCheck) } @@ -640,6 +973,12 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.TsBuildInfoFile != "" { fn(CommandLineCompilerOptionsMap.Get("tsBuildInfoFile"), options.TsBuildInfoFile) } + if options.TypeRoots != nil { + fn(CommandLineCompilerOptionsMap.Get("typeRoots"), options.TypeRoots) + } + if options.Types != nil { + fn(CommandLineCompilerOptionsMap.Get("types"), options.Types) + } if options.UseDefineForClassFields != core.TSUnknown { fn(CommandLineCompilerOptionsMap.Get("useDefineForClassFields"), options.UseDefineForClassFields) } diff --git a/tsc/internal/tsoptions/rawcompileroptions.go b/tsc/internal/tsoptions/rawcompileroptions.go index d437fa81fb394..26b7afd7ad670 100644 --- a/tsc/internal/tsoptions/rawcompileroptions.go +++ b/tsc/internal/tsoptions/rawcompileroptions.go @@ -33,6 +33,10 @@ func (o *RawCompilerOptions) UnmarshalJSONFrom(dec *json.Decoder) error { if o.values == nil { o.values = collections.NewOrderedMapWithSizeHint[string, any](0) } + return UnmarshalRawCompilerOptions(dec, o.values) +} + +func UnmarshalRawCompilerOptions(dec *json.Decoder, values *collections.OrderedMap[string, any]) error { token, err := dec.ReadToken() if err != nil { return err @@ -58,7 +62,7 @@ func (o *RawCompilerOptions) UnmarshalJSONFrom(dec *json.Decoder) error { } else if decodeErr := json.UnmarshalDecode(dec, &value); decodeErr != nil { return decodeErr } - o.values.Set(key, value) + values.Set(key, value) } _, err = dec.ReadToken() return err diff --git a/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline b/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline index 9db5ec4677880..e7abd85f6e972 100644 --- a/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline +++ b/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline @@ -20,7 +20,7 @@ function testEvaluateKeyboardEvent() { } //// [/out/src.tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","./input/keyboard.d.ts","../src/terminal.ts","./input/keyboard.test.d.ts","../src/common/input/keyboard.ts","../src/common/input/keyboard.test.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"362bf1943c7d2a927f25978d1f24d61f-export declare function evaluateKeyboardEvent(): void;\n//# sourceMappingURL=keyboard.d.ts.map",{"version":"ff8262b3768be0c0049523b4b8a7b4f7-import { evaluateKeyboardEvent } from 'common/input/keyboard';\nfunction foo() {\n\treturn evaluateKeyboardEvent();\n}","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"aaff3960e003a07ef50db935cb91a696-export {};\n//# sourceMappingURL=keyboard.test.d.ts.map"],"fileIdsList":[[2]],"options":{"composite":true,"declarationMap":true,"outDir":"./","tsBuildInfoFile":"./src.tsconfig.tsbuildinfo"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./terminal.d.ts","resolvedRoot":[[2,5],[4,6]]} +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","./input/keyboard.d.ts","../src/terminal.ts","./input/keyboard.test.d.ts","../src/common/input/keyboard.ts","../src/common/input/keyboard.test.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"362bf1943c7d2a927f25978d1f24d61f-export declare function evaluateKeyboardEvent(): void;\n//# sourceMappingURL=keyboard.d.ts.map",{"version":"ff8262b3768be0c0049523b4b8a7b4f7-import { evaluateKeyboardEvent } from 'common/input/keyboard';\nfunction foo() {\n\treturn evaluateKeyboardEvent();\n}","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"aaff3960e003a07ef50db935cb91a696-export {};\n//# sourceMappingURL=keyboard.test.d.ts.map"],"fileIdsList":[[2]],"options":{"composite":true,"declarationMap":true,"outDir":"./","paths":{"common/*":["./common/*"]},"tsBuildInfoFile":"./src.tsconfig.tsbuildinfo","pathsBasePath":"../src"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./terminal.d.ts","resolvedRoot":[[2,5],[4,6]]} //// [/out/src.tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -91,7 +91,13 @@ function testEvaluateKeyboardEvent() { "composite": true, "declarationMap": true, "outDir": "./", - "tsBuildInfoFile": "./src.tsconfig.tsbuildinfo" + "paths": { + "common/*": [ + "./common/*" + ] + }, + "tsBuildInfoFile": "./src.tsconfig.tsbuildinfo", + "pathsBasePath": "../src" }, "referencedMap": { "../src/terminal.ts": [ @@ -109,7 +115,7 @@ function testEvaluateKeyboardEvent() { "../src/common/input/keyboard.test.ts" ] ], - "size": 1705 + "size": 1766 } //// [/out/terminal.d.ts] *new* export {}; @@ -123,7 +129,7 @@ function foo() { } //// [/out/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/common/input/keyboard.ts","../src/common/input/keyboard.test.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6e37abb18685aa8e2642ab0218eef699-function bar() { return \"just a random function so .d.ts location doesnt match\"; }\nexport function evaluateKeyboardEvent() { }","signature":"569df1f274cf52f322c6e7a2f4e891fe-export declare function evaluateKeyboardEvent(): void;\n","impliedNodeFormat":1},{"version":"e844013c2f8764710bfebda24351c0d3-import { evaluateKeyboardEvent } from 'common/input/keyboard';\nfunction testEvaluateKeyboardEvent() {\n\treturn evaluateKeyboardEvent();\n}","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"declarationMap":true,"outDir":"./"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./input/keyboard.test.d.ts"} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/common/input/keyboard.ts","../src/common/input/keyboard.test.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6e37abb18685aa8e2642ab0218eef699-function bar() { return \"just a random function so .d.ts location doesnt match\"; }\nexport function evaluateKeyboardEvent() { }","signature":"569df1f274cf52f322c6e7a2f4e891fe-export declare function evaluateKeyboardEvent(): void;\n","impliedNodeFormat":1},{"version":"e844013c2f8764710bfebda24351c0d3-import { evaluateKeyboardEvent } from 'common/input/keyboard';\nfunction testEvaluateKeyboardEvent() {\n\treturn evaluateKeyboardEvent();\n}","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"declarationMap":true,"outDir":"./","paths":{"*":["../*"]},"pathsBasePath":"../src/common"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./input/keyboard.test.d.ts"} //// [/out/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -188,7 +194,13 @@ function foo() { "options": { "composite": true, "declarationMap": true, - "outDir": "./" + "outDir": "./", + "paths": { + "*": [ + "../*" + ] + }, + "pathsBasePath": "../src/common" }, "referencedMap": { "../src/common/input/keyboard.test.ts": [ @@ -196,7 +208,7 @@ function foo() { ] }, "latestChangedDtsFile": "./input/keyboard.test.d.ts", - "size": 1670 + "size": 1725 } //// [/src/common/input/keyboard.test.ts] *new* import { evaluateKeyboardEvent } from 'common/input/keyboard'; diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js new file mode 100644 index 0000000000000..79481296297de --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js @@ -0,0 +1,385 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input } from './styles.css'; +export const result = input; + +//// [/home/src/workspaces/project/producer/styles.d.css.ts] *new* +export declare const input: { value: string }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowArbitraryExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../styles.d.css.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n"],"fileIdsList":[[3]],"options":{"allowArbitraryExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[2,1]],"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":36,"code":6263,"category":1,"messageKey":"Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263","messageArgs":["./styles.css","/home/src/workspaces/project/producer/styles.d.css.ts"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../styles.d.css.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../styles.d.css.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 36, + "code": 6263, + "category": 1, + "messageKey": "Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263", + "messageArgs": [ + "./styles.css", + "/home/src/workspaces/project/producer/styles.d.css.ts" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1734 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change allowArbitraryExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../styles.d.css.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n",{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"allowArbitraryExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../styles.d.css.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../styles.d.css.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/styles.d.css.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/styles.d.css.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js new file mode 100644 index 0000000000000..d3343a59637dc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js @@ -0,0 +1,406 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input } from './styles.css'; +export const result = input; + +//// [/home/src/workspaces/project/producer/styles.d.css.ts] *new* +export declare const input: { value: string }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../styles.d.css.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n",{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"allowArbitraryExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../styles.d.css.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../styles.d.css.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/styles.d.css.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change allowArbitraryExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowArbitraryExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../styles.d.css.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n"],"fileIdsList":[[3]],"options":{"allowArbitraryExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[2,1]],"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":36,"code":6263,"category":1,"messageKey":"Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263","messageArgs":["./styles.css","/home/src/workspaces/project/producer/styles.d.css.ts"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../styles.d.css.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../styles.d.css.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 36, + "code": 6263, + "category": 1, + "messageKey": "Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263", + "messageArgs": [ + "./styles.css", + "/home/src/workspaces/project/producer/styles.d.css.ts" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1734 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js new file mode 100644 index 0000000000000..04725e3866c5a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js @@ -0,0 +1,424 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1972 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change allowImportingTsExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1971 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js new file mode 100644 index 0000000000000..3e1c7a0097c63 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js @@ -0,0 +1,424 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1971 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change allowImportingTsExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1972 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-0.js new file mode 100644 index 0000000000000..4fa4dd05a8991 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-0.js @@ -0,0 +1,253 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","lib.es2015.symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "lib.es2015.symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "lib.es2015.symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Updating unchanged output timestamps of project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-1.js new file mode 100644 index 0000000000000..c38d0c406e948 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-1.js @@ -0,0 +1,253 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","lib.es2015.symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "lib.es2015.symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "lib.es2015.symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Updating unchanged output timestamps of project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js new file mode 100644 index 0000000000000..002a49feff4df --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js @@ -0,0 +1,417 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":[],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2055 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js new file mode 100644 index 0000000000000..48a53124f3433 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js @@ -0,0 +1,417 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":[],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2055 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-0.js new file mode 100644 index 0000000000000..7894cc7379a9d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-0.js @@ -0,0 +1,415 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2033 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-1.js new file mode 100644 index 0000000000000..9366ac3b02752 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-1.js @@ -0,0 +1,415 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2033 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-0.js new file mode 100644 index 0000000000000..3f37003f095ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-0.js @@ -0,0 +1,344 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function decorate(value: any): any; +@decorate +export class Result { constructor(value: string | null) {} } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare class Result { + constructor(value: string | null); +} + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [String]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1502 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [Object]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1501 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-1.js new file mode 100644 index 0000000000000..dbd9036e28c69 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-1.js @@ -0,0 +1,344 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function decorate(value: any): any; +@decorate +export class Result { constructor(value: string | null) {} } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare class Result { + constructor(value: string | null); +} + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [Object]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1501 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [String]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1502 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js new file mode 100644 index 0000000000000..1502a680698b5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js @@ -0,0 +1,432 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input as a } from 'first'; +import { input as b } from 'second'; +export const result = [a, b]; + +//// [/home/src/workspaces/project/producer/node_modules/first/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts] *new* +export const input: 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/first/package.json] *new* +{"name":"first","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts] *new* +export const input: 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/package.json] *new* +{"name":"second","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": false, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: ("first" | "second")[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[6],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/node_modules/dependency/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","2be5566647752018a2f34c167fe6f053-export const input: 'second';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 6 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/node_modules/dependency/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/node_modules/dependency/index.d.ts", + "version": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "signature": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2130 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change deduplicatePackages without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[5],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 5 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1983 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js new file mode 100644 index 0000000000000..97714bd7990ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js @@ -0,0 +1,434 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input as a } from 'first'; +import { input as b } from 'second'; +export const result = [a, b]; + +//// [/home/src/workspaces/project/producer/node_modules/first/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts] *new* +export const input: 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/first/package.json] *new* +{"name":"first","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts] *new* +export const input: 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/package.json] *new* +{"name":"second","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[5],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 5 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1983 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change deduplicatePackages without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": false, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: ("first" | "second")[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[6],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/node_modules/dependency/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","2be5566647752018a2f34c167fe6f053-export const input: 'second';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 6 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/node_modules/dependency/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/node_modules/dependency/index.d.ts", + "version": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "signature": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2130 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js new file mode 100644 index 0000000000000..3c7831cd91830 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js @@ -0,0 +1,371 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +interface Promise { then(callback: (value: T) => U): Promise; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export async function result() { return 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): Promise; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1385 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change importHelpers without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +import { __awaiter } from "tslib"; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":28,"code":2354,"category":1,"messageKey":"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354","messageArgs":["tslib"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 28, + "code": 2354, + "category": 1, + "messageKey": "This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354", + "messageArgs": [ + "tslib" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1579 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js new file mode 100644 index 0000000000000..59f58dcc33ad2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js @@ -0,0 +1,350 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +interface Promise { then(callback: (value: T) => U): Promise; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export async function result() { return 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): Promise; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +import { __awaiter } from "tslib"; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":28,"code":2354,"category":1,"messageKey":"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354","messageArgs":["tslib"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 28, + "code": 2354, + "category": 1, + "messageKey": "This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354", + "messageArgs": [ + "tslib" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1579 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change importHelpers without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1385 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-first-to-second-build.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-first-to-second-build.js new file mode 100644 index 0000000000000..a2c736414fdfd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-first-to-second-build.js @@ -0,0 +1,514 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/configs/first/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/first/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/configs/second/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/second/thing.ts] *new* +export class Thing { private field = 2; } + +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from '../configs/first/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "extends": "../configs/first/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *new* +import { Thing } from '../configs/first/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/first"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/first" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2025 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change extends without changing paths or source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "extends": "../configs/second/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../configs/first/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/second"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/second" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2043 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-second-to-first-build.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-second-to-first-build.js new file mode 100644 index 0000000000000..ca755b7e04c90 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-second-to-first-build.js @@ -0,0 +1,514 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/configs/first/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/first/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/configs/second/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/second/thing.ts] *new* +export class Thing { private field = 2; } + +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from '../configs/first/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "extends": "../configs/second/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *new* +import { Thing } from '../configs/first/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../configs/first/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/second"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/second" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2043 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change extends without changing paths or source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "extends": "../configs/first/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/first"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/first" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2025 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js new file mode 100644 index 0000000000000..11f43d6591048 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js @@ -0,0 +1,452 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1 + 2; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change isolatedDeclarations without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1608 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"emitSignatures":[2]} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "emitSignatures": [ + { + "file": "../index.ts", + "original": 2 + } + ], + "size": 1471 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js new file mode 100644 index 0000000000000..badcc18b6664a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js @@ -0,0 +1,344 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1 + 2; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"emitSignatures":[2]} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "emitSignatures": [ + { + "file": "../index.ts", + "original": 2 + } + ], + "size": 1471 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedDeclarations without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js new file mode 100644 index 0000000000000..0571c10021986 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js @@ -0,0 +1,305 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1387 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1386 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js new file mode 100644 index 0000000000000..df18cc3c6fa32 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js @@ -0,0 +1,305 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1386 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1387 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-0.js new file mode 100644 index 0000000000000..19ee376864129 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-0.js @@ -0,0 +1,313 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1413 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1412 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-1.js new file mode 100644 index 0000000000000..e24230c3848dc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-1.js @@ -0,0 +1,313 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1412 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1413 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js new file mode 100644 index 0000000000000..a8a5b4a6b4ecb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js @@ -0,0 +1,322 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } } +declare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } } +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "A.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { + a: string; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"A.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change jsxFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "B.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { + b: number; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: B.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"B.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "B.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js new file mode 100644 index 0000000000000..36d5a31e737b5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js @@ -0,0 +1,322 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } } +declare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } } +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "B.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { + b: number; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: B.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"B.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "B.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change jsxFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "A.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { + a: string; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"A.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js new file mode 100644 index 0000000000000..c9c5c473e69c6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js @@ -0,0 +1,319 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } } +declare namespace B { const Fragment: any; } +export const result = <>
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + const Fragment: any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"A.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change jsxFragmentFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"B.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js new file mode 100644 index 0000000000000..52ebae570b3c0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js @@ -0,0 +1,319 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } } +declare namespace B { const Fragment: any; } +export const result = <>
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + const Fragment: any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"B.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change jsxFragmentFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"A.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js new file mode 100644 index 0000000000000..ecf0d8d654838 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js @@ -0,0 +1,348 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/package.json] *new* +{"name":"@typescript/lib-es2015"} +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/package.json] *new* +{"name":"@typescript/lib-es5","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-es2015/symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es5/index.d.ts", + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1767 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es2015/symbol.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../index.ts"],"fileInfos":[{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../node_modules/@typescript/lib-es5/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1766 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js new file mode 100644 index 0000000000000..0d69f8b6db36c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js @@ -0,0 +1,348 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/package.json] *new* +{"name":"@typescript/lib-es2015"} +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/package.json] *new* +{"name":"@typescript/lib-es5","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es2015/symbol.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../index.ts"],"fileInfos":[{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../node_modules/@typescript/lib-es5/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1766 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-es2015/symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es5/index.d.ts", + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1767 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-0.js new file mode 100644 index 0000000000000..4227e2f2c4c56 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-0.js @@ -0,0 +1,814 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/data.json] *new* +{"value":1} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-1.js new file mode 100644 index 0000000000000..cc9165a7ac232 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-1.js @@ -0,0 +1,790 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/data.json] *new* +{"value":1} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-0.js new file mode 100644 index 0000000000000..a9524612442bb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-0.js @@ -0,0 +1,341 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = await 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1254 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":1378,"category":1,"messageKey":"Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 1378, + "category": 1, + "messageKey": "Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1456 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-1.js new file mode 100644 index 0000000000000..1dfec8ae9746d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-1.js @@ -0,0 +1,320 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = await 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":1378,"category":1,"messageKey":"Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 1378, + "category": 1, + "messageKey": "Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1456 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1254 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-0.js new file mode 100644 index 0000000000000..947841c303a6e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-0.js @@ -0,0 +1,302 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.js] *new* +exports.value = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare var value: 1; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +"use strict"; +exports.value = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +exports.value = 1; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-1.js new file mode 100644 index 0000000000000..fb976e0bd42d1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-1.js @@ -0,0 +1,302 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.js] *new* +exports.value = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare var value: 1; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +exports.value = 1; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +"use strict"; +exports.value = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.js' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-0.js new file mode 100644 index 0000000000000..a682f27182b8e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-0.js @@ -0,0 +1,368 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare module 'input' { export const value: number; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare module 'input' { + const value: number; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1363 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare module 'input' { + const value: number; +} +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":15,"end":22,"code":2664,"category":1,"messageKey":"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 15, + "end": 22, + "code": 2664, + "category": 1, + "messageKey": "Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1518 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-1.js new file mode 100644 index 0000000000000..cda988e5ce02f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-1.js @@ -0,0 +1,347 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare module 'input' { export const value: number; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare module 'input' { + const value: number; +} +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":15,"end":22,"code":2664,"category":1,"messageKey":"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 15, + "end": 22, + "code": 2664, + "category": 1, + "messageKey": "Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1518 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare module 'input' { + const value: number; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1363 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-0.js new file mode 100644 index 0000000000000..140dc66b4593f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-0.js @@ -0,0 +1,292 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +// A file with no statements. + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1239 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1251 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-1.js new file mode 100644 index 0000000000000..33c1711d265a0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-1.js @@ -0,0 +1,292 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +// A file with no statements. + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1251 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1239 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-0.js new file mode 100644 index 0000000000000..175336b7fe525 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-0.js @@ -0,0 +1,285 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"99aa06d3014798d86001c324468d497f-"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1126 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"99aa06d3014798d86001c324468d497f-","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1220 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-1.js new file mode 100644 index 0000000000000..1a58d333d1c15 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-1.js @@ -0,0 +1,285 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"99aa06d3014798d86001c324468d497f-","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1220 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"99aa06d3014798d86001c324468d497f-"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1126 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js new file mode 100644 index 0000000000000..274e76ec8f5ed --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js @@ -0,0 +1,537 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1987 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js new file mode 100644 index 0000000000000..c2ba7b1dd72dc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js @@ -0,0 +1,537 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1987 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-0.js new file mode 100644 index 0000000000000..72bc577e73ad3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-0.js @@ -0,0 +1,535 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1965 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-1.js new file mode 100644 index 0000000000000..25189b87d7b69 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-1.js @@ -0,0 +1,535 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1965 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js new file mode 100644 index 0000000000000..cc3ad19246582 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js @@ -0,0 +1,587 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Value } from './input'; +export function make() { return new Value(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/input.native.ts] *new* +export class Value { private field = 2; } + +//// [/home/src/workspaces/project/producer/input.ts] *new* +export class Value { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Value } from './input'; +export declare function make(): Value; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./input").Value; + +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.native.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleSuffixes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./input.native").Value; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.native.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js new file mode 100644 index 0000000000000..8387ba1a7ff43 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js @@ -0,0 +1,587 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Value } from './input'; +export function make() { return new Value(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/input.native.ts] *new* +export class Value { private field = 2; } + +//// [/home/src/workspaces/project/producer/input.ts] *new* +export class Value { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Value } from './input'; +export declare function make(): Value; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./input.native").Value; + +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.native.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change moduleSuffixes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./input").Value; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2154 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.native.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/input.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js new file mode 100644 index 0000000000000..660a33a9e49f6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js @@ -0,0 +1,293 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { let value; value = 1; return value; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1316 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noImplicitAny without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1318 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js new file mode 100644 index 0000000000000..5c3eb994673f2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js @@ -0,0 +1,293 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { let value; value = 1; return value; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1318 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noImplicitAny without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1316 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js new file mode 100644 index 0000000000000..de20de52ab69b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js @@ -0,0 +1,299 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = { value: 1, get() { return this.value; } }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: number; + get(): any; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1351 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noImplicitThis without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: number; + get(): number; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1353 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js new file mode 100644 index 0000000000000..bee308e41444d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js @@ -0,0 +1,299 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = { value: 1, get() { return this.value; } }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: number; + get(): number; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1353 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noImplicitThis without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: number; + get(): any; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1351 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-0.js new file mode 100644 index 0000000000000..e70485b1d0823 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-0.js @@ -0,0 +1,376 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.full.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'library'; + +//// [/home/src/workspaces/project/producer/globals.d.ts] *new* +interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {} + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "library"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.full.d.ts","../globals.d.ts","../index.ts"],"fileInfos":[{"version":"9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.full.d.ts", + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.full.d.ts", + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "signature": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1685 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noLib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[1,2]],"fileNames":["../globals.d.ts","../index.ts"],"fileInfos":[{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 1, + 2 + ] + } + ], + "fileNames": [ + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 2304, + "category": 1, + "messageKey": "Cannot_find_name_0_2304", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 989 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/globals.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-1.js new file mode 100644 index 0000000000000..ca9f5ff0ec8fd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-1.js @@ -0,0 +1,357 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.full.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'library'; + +//// [/home/src/workspaces/project/producer/globals.d.ts] *new* +interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {} + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[1,2]],"fileNames":["../globals.d.ts","../index.ts"],"fileInfos":[{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 1, + 2 + ] + } + ], + "fileNames": [ + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 2304, + "category": 1, + "messageKey": "Cannot_find_name_0_2304", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 989 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noLib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "library"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.full.d.ts","../globals.d.ts","../index.ts"],"fileInfos":[{"version":"9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.full.d.ts", + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.full.d.ts", + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "signature": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1685 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +(used version) /home/src/workspaces/project/producer/globals.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js new file mode 100644 index 0000000000000..29057cdc94f21 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js @@ -0,0 +1,294 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: { [key: string]: number }; +export const result = input.value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1344 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noUncheckedIndexedAccess without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: number | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1355 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js new file mode 100644 index 0000000000000..7fc99e25efa14 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js @@ -0,0 +1,294 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: { [key: string]: number }; +export const result = input.value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1355 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change noUncheckedIndexedAccess without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1344 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js new file mode 100644 index 0000000000000..1c585b41306fa --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js @@ -0,0 +1,539 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2011 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js new file mode 100644 index 0000000000000..c1632e3fcd852 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js @@ -0,0 +1,539 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2011 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-0.js new file mode 100644 index 0000000000000..f9134fdb28d3d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-0.js @@ -0,0 +1,528 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1956 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-1.js new file mode 100644 index 0000000000000..14de2bedd79c5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-1.js @@ -0,0 +1,528 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1956 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-0.js new file mode 100644 index 0000000000000..1545c1c210109 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-0.js @@ -0,0 +1,408 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +namespace Value { export const enum Field { One } } + +//// [/home/src/workspaces/project/producer/other.ts] *new* +class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace Value { + const enum Field { + One = 0 + } +} + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1596 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":10,"end":15,"code":2433,"category":1,"messageKey":"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433"}]]],"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 10, + "end": 15, + "code": 2433, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433" + } + ] + ] + ], + "latestChangedDtsFile": "./other.d.ts", + "size": 1798 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-1.js new file mode 100644 index 0000000000000..5aeee40534e3a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-1.js @@ -0,0 +1,387 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +namespace Value { export const enum Field { One } } + +//// [/home/src/workspaces/project/producer/other.ts] *new* +class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace Value { + const enum Field { + One = 0 + } +} + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":10,"end":15,"code":2433,"category":1,"messageKey":"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433"}]]],"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 10, + "end": 15, + "code": 2433, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433" + } + ] + ] + ], + "latestChangedDtsFile": "./other.d.ts", + "size": 1798 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1596 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-0.js new file mode 100644 index 0000000000000..aa0e919001c60 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-0.js @@ -0,0 +1,352 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export namespace Value { export const enum Field { One } } +export class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare namespace Value { + const enum Field { + One = 0 + } +} +export declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1416 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":17,"end":22,"code":2434,"category":1,"messageKey":"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 17, + "end": 22, + "code": 2434, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1612 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-1.js new file mode 100644 index 0000000000000..f2c6dd009bf68 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-1.js @@ -0,0 +1,331 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export namespace Value { export const enum Field { One } } +export class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare namespace Value { + const enum Field { + One = 0 + } +} +export declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":17,"end":22,"code":2434,"category":1,"messageKey":"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 17, + "end": 22, + "code": 2434, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1612 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1416 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js new file mode 100644 index 0000000000000..12bd943d347d1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js @@ -0,0 +1,400 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } +} +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "React", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: React.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"React","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "React", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1697 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change reactNamespace without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "Other", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"Other","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":182,"end":189,"code":7026,"category":1,"messageKey":"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026","messageArgs":["IntrinsicElements"]},{"pos":183,"end":186,"code":2874,"category":1,"messageKey":"This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874","messageArgs":["Other"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "Other", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.tsx", + [ + { + "pos": 182, + "end": 189, + "code": 7026, + "category": 1, + "messageKey": "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", + "messageArgs": [ + "IntrinsicElements" + ] + }, + { + "pos": 183, + "end": 186, + "code": 2874, + "category": 1, + "messageKey": "This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874", + "messageArgs": [ + "Other" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1817 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js new file mode 100644 index 0000000000000..25a9ac0321641 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js @@ -0,0 +1,369 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } +} +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "Other", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"Other","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":182,"end":189,"code":7026,"category":1,"messageKey":"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026","messageArgs":["IntrinsicElements"]},{"pos":183,"end":186,"code":2874,"category":1,"messageKey":"This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874","messageArgs":["Other"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "Other", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.tsx", + [ + { + "pos": 182, + "end": 189, + "code": 7026, + "category": 1, + "messageKey": "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", + "messageArgs": [ + "IntrinsicElements" + ] + }, + { + "pos": 183, + "end": 186, + "code": 2874, + "category": 1, + "messageKey": "This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874", + "messageArgs": [ + "Other" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1817 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change reactNamespace without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "React", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: React.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"React","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "React", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1697 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.tsx' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js new file mode 100644 index 0000000000000..9eb9883b7ead9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js new file mode 100644 index 0000000000000..0b6c52819766d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-0.js new file mode 100644 index 0000000000000..fb9097bedc58e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-0.js @@ -0,0 +1,408 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2030 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-1.js new file mode 100644 index 0000000000000..3b8af8616cd62 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-1.js @@ -0,0 +1,408 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2030 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js new file mode 100644 index 0000000000000..bec6fb145373d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js @@ -0,0 +1,529 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": true, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":true,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": true, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2019 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js new file mode 100644 index 0000000000000..1fb2398799aa4 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js @@ -0,0 +1,529 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": true, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":true,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": true, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2019 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-0.js new file mode 100644 index 0000000000000..2efcd44cc0e90 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-0.js @@ -0,0 +1,527 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1986 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-1.js new file mode 100644 index 0000000000000..222fb6c9eb51f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-1.js @@ -0,0 +1,527 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/producer/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1986 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/producer/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js new file mode 100644 index 0000000000000..2026dc5fcc870 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js @@ -0,0 +1,389 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/other.ts] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/other.js] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1510 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export { result } from './other.js'; + +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1458 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js new file mode 100644 index 0000000000000..cd9bf52ec6e72 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js @@ -0,0 +1,413 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/other.ts] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export { result } from './other.js'; + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/other.js] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1458 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1510 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-0.js new file mode 100644 index 0000000000000..62dba3d7e9b80 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-0.js @@ -0,0 +1,424 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1977 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1976 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-1.js new file mode 100644 index 0000000000000..5e9080aa179fd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-1.js @@ -0,0 +1,424 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1976 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1977 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/thing.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js new file mode 100644 index 0000000000000..7e214f870b18b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js @@ -0,0 +1,422 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":[],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1951 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js new file mode 100644 index 0000000000000..5856788e0f121 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js @@ -0,0 +1,422 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":[],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1951 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-0.js new file mode 100644 index 0000000000000..a7dbb0c97b1ca --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-0.js @@ -0,0 +1,420 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1937 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-1.js new file mode 100644 index 0000000000000..e4f2392add815 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-1.js @@ -0,0 +1,420 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1937 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/src/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/source-edit-after-changing-stripInternal-build.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/source-edit-after-changing-stripInternal-build.js new file mode 100644 index 0000000000000..476fe37b9bc40 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/source-edit-after-changing-stripInternal-build.js @@ -0,0 +1,502 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/a.ts] *new* +export class Result { + /** @internal */ + value = ""; +} + +//// [/home/src/workspaces/project/b.ts] *new* +import { Result } from './a'; +export const forwarded = new Result().value; + +//// [/home/src/workspaces/project/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "strict": true, "stripInternal": true, + "outDir": "dist" + }, + "files": ["a.ts", "b.ts"] + } + +tsgo --build --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is out of date because output file 'dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/dist/a.d.ts] *new* +export declare class Result { +} + +//// [/home/src/workspaces/project/dist/b.d.ts] *new* +export declare const forwarded: string; + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n","signature":"7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./b.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": true + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./b.d.ts", + "size": 1540 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts +(stored at emit) /home/src/workspaces/project/b.ts + + +Edit [0]:: disable stripInternal without changing source files +//// [/home/src/workspaces/project/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "strict": true, "stripInternal": false, + "outDir": "dist" + }, + "files": ["a.ts", "b.ts"] + } + +tsgo --build --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is out of date because output 'dist/tsconfig.tsbuildinfo' is older than input 'tsconfig.json' + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +//// [/home/src/workspaces/project/dist/a.d.ts] *modified* +export declare class Result { + /** @internal */ + value: string; +} + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n","signature":"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./a.d.ts", + "size": 1583 +} + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts + + +Edit [1]:: no change + +tsgo --build --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is up to date because newest input 'b.ts' is older than output 'dist/tsconfig.tsbuildinfo' + + + + +Edit [2]:: restore the original declaration shape with a source edit +//// [/home/src/workspaces/project/a.ts] *modified* +export class Result { +} + + +tsgo --build --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is out of date because output 'dist/tsconfig.tsbuildinfo' is older than input 'a.ts' + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + +//// [/home/src/workspaces/project/dist/a.d.ts] *modified* +export declare class Result { +} + +//// [/home/src/workspaces/project/dist/b.d.ts] *modified* +export declare const forwarded: any; + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n","signature":"7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":false},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":73,"code":2339,"category":1,"messageKey":"Property_0_does_not_exist_on_type_1_2339","messageArgs":["value","Result"]}]]],"latestChangedDtsFile":"./b.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../b.ts", + [ + { + "pos": 68, + "end": 73, + "code": 2339, + "category": 1, + "messageKey": "Property_0_does_not_exist_on_type_1_2339", + "messageArgs": [ + "value", + "Result" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./b.d.ts", + "size": 1668 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/a.ts +(computed .d.ts) /home/src/workspaces/project/b.ts + + +Edit [3]:: no change + +tsgo --build --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is out of date because buildinfo file 'dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [4]:: force rebuild + +tsgo --build --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + +//// [/home/src/workspaces/project/dist/a.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/dist/b.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts +(stored at emit) /home/src/workspaces/project/b.ts + + +Edit [5]:: no change + +tsgo --build --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is out of date because buildinfo file 'dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js new file mode 100644 index 0000000000000..734f32c870357 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1310 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js new file mode 100644 index 0000000000000..876d6baa3eaca --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1310 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-0.js new file mode 100644 index 0000000000000..b17ca0750cb16 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-0.js @@ -0,0 +1,288 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1296 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-1.js new file mode 100644 index 0000000000000..8044183d8b116 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-1.js @@ -0,0 +1,288 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1296 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-0.js new file mode 100644 index 0000000000000..ee6b8dfd140e7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-0.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1335 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1334 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-1.js new file mode 100644 index 0000000000000..39b2eefffa829 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-1.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1334 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1335 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js new file mode 100644 index 0000000000000..aef5332d780ac --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js @@ -0,0 +1,297 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; } +interface CallableFunction { + bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R; +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function input(value: string): number; +export const result = input.bind(null, 'hello'); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1566 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictBindCallApply without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: () => number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1574 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js new file mode 100644 index 0000000000000..eb2c7325e2ad3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js @@ -0,0 +1,297 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; } +interface CallableFunction { + bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R; +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function input(value: string): number; +export const result = input.bind(null, 'hello'); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: () => number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1574 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictBindCallApply without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1566 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js new file mode 100644 index 0000000000000..04f6a55a25b87 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js @@ -0,0 +1,297 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic; +interface Set { + values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } }; +} +declare const Set: { new(): Set }; +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = new Set().values().next().value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1529 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictBuiltinIteratorReturn without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1543 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js new file mode 100644 index 0000000000000..89439febc0296 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js @@ -0,0 +1,297 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic; +interface Set { + values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } }; +} +declare const Set: { new(): Set }; +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = new Set().values().next().value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1543 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictBuiltinIteratorReturn without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1529 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js new file mode 100644 index 0000000000000..bd52361ef6948 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js @@ -0,0 +1,308 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +interface Animal { name: string; } +interface Dog extends Animal { bark(): void; } +declare function infer(a: (value: T) => void, b: (value: T) => void): T; +declare const animal: (value: Animal) => void; +declare const dog: (value: Dog) => void; +export const result = infer(animal, dog); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +interface Animal { + name: string; +} +export declare const result: Animal; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1600 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictFunctionTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +interface Animal { + name: string; +} +interface Dog extends Animal { + bark(): void; +} +export declare const result: Dog; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1650 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js new file mode 100644 index 0000000000000..bd4dc912f5216 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js @@ -0,0 +1,308 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +interface Animal { name: string; } +interface Dog extends Animal { bark(): void; } +declare function infer(a: (value: T) => void, b: (value: T) => void): T; +declare const animal: (value: Animal) => void; +declare const dog: (value: Dog) => void; +export const result = infer(animal, dog); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +interface Animal { + name: string; +} +interface Dog extends Animal { + bark(): void; +} +export declare const result: Dog; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1650 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictFunctionTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +interface Animal { + name: string; +} +export declare const result: Animal; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1600 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js new file mode 100644 index 0000000000000..e65c37d50ee5c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1360 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1371 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js new file mode 100644 index 0000000000000..d3b84ad448998 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1371 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1360 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js new file mode 100644 index 0000000000000..49edf94b19a6a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js @@ -0,0 +1,320 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1n; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1n; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":24,"code":2737,"category":1,"messageKey":"BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 24, + "code": 2737, + "category": 1, + "messageKey": "BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1419 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change target without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js new file mode 100644 index 0000000000000..788395726af96 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js @@ -0,0 +1,341 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1n; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1n; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change target without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":24,"code":2737,"category":1,"messageKey":"BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 24, + "code": 2737, + "category": 1, + "messageKey": "BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1419 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because buildinfo file 'producer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js new file mode 100644 index 0000000000000..2ad4e589165f2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js @@ -0,0 +1,384 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-a", + "./types-b" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} +//// [/home/src/workspaces/project/producer/types-a/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/types-b/second/index.d.ts] *new* +declare function input(): 'second'; + + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-a/first/index.d.ts","../types-b/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-a","../types-b"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-a/first/index.d.ts", + "../types-b/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1642 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change typeRoots without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-b", + "./types-a" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-b/second/index.d.ts","../types-a/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-b","../types-a"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-b/second/index.d.ts", + "../types-a/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1641 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/types-b/second/index.d.ts +(used version) /home/src/workspaces/project/producer/types-a/first/index.d.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js new file mode 100644 index 0000000000000..a222e28c0cd23 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js @@ -0,0 +1,384 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-b", + "./types-a" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} +//// [/home/src/workspaces/project/producer/types-a/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/types-b/second/index.d.ts] *new* +declare function input(): 'second'; + + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-b/second/index.d.ts","../types-a/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-b","../types-a"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-b/second/index.d.ts", + "../types-a/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1641 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change typeRoots without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-a", + "./types-b" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-a/first/index.d.ts","../types-b/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-a","../types-b"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-a/first/index.d.ts", + "../types-b/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1642 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/types-a/first/index.d.ts +(used version) /home/src/workspaces/project/producer/types-b/second/index.d.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js new file mode 100644 index 0000000000000..4febac96f3cf7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js @@ -0,0 +1,384 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts] *new* +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "first", + "second" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/first/index.d.ts","../node_modules/@types/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["first","second"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/first/index.d.ts", + "../node_modules/@types/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "first", + "second" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1821 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change types without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "second", + "first" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/second/index.d.ts","../node_modules/@types/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["second","first"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/second/index.d.ts", + "../node_modules/@types/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "second", + "first" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1820 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js new file mode 100644 index 0000000000000..6ae22ba02fa06 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js @@ -0,0 +1,384 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts] *new* +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "second", + "first" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/second/index.d.ts","../node_modules/@types/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["second","first"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/second/index.d.ts", + "../node_modules/@types/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "second", + "first" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1820 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change types without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "first", + "second" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/first/index.d.ts","../node_modules/@types/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["first","second"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/first/index.d.ts", + "../node_modules/@types/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "first", + "second" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1821 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js new file mode 100644 index 0000000000000..520691b6e5969 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js @@ -0,0 +1,293 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { try { throw 1; } catch (error) { return error; } } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": false + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1342 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change useUnknownInCatchVariables without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": true + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): unknown; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1345 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js new file mode 100644 index 0000000000000..509c7627154ca --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js @@ -0,0 +1,293 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { try { throw 1; } catch (error) { return error; } } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": true + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): unknown; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1345 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [1]:: change useUnknownInCatchVariables without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": false + }, + "files": [ + "index.ts" + ] +} + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1342 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --build producer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js b/tsc/testdata/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js index a37710db5fecc..0b48468c1d8c5 100644 --- a/tsc/testdata/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js +++ b/tsc/testdata/baselines/reference/tsbuild/declarationEmit/reports-dts-generation-errors-with-incremental.js @@ -89,7 +89,7 @@ import ky from 'ky'; export const api = ky.extend({}); //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"packageJsons":["./node_modules/ky/package.json","./package.json"],"missingPackageJsons":["./node_modules/ky/distribution/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/ky/distribution/index.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b9b50c37c18e43d94b0dd4fb43967f10-type KyInstance = {\n extend(options: Record): KyInstance;\n}\ndeclare const ky: KyInstance;\nexport default ky;","impliedNodeFormat":99},{"version":"0f5091e963c17913313e4969c59e6eb4-import ky from 'ky';\nexport const api = ky.extend({});","impliedNodeFormat":99}],"fileIdsList":[[2]],"options":{"composite":false,"declaration":true,"module":199,"skipLibCheck":true,"skipDefaultLibCheck":true},"referencedMap":[[3,1]],"emitDiagnosticsPerFile":[[3,[{"pos":34,"end":37,"code":4023,"category":1,"messageKey":"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023","messageArgs":["api","KyInstance","\"/home/src/workspaces/project/node_modules/ky/distribution/index\""]}]]]} +{"version":"FakeTSVersion","root":[3],"packageJsons":["./node_modules/ky/package.json","./package.json"],"missingPackageJsons":["./node_modules/ky/distribution/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/ky/distribution/index.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b9b50c37c18e43d94b0dd4fb43967f10-type KyInstance = {\n extend(options: Record): KyInstance;\n}\ndeclare const ky: KyInstance;\nexport default ky;","impliedNodeFormat":99},{"version":"0f5091e963c17913313e4969c59e6eb4-import ky from 'ky';\nexport const api = ky.extend({});","impliedNodeFormat":99}],"fileIdsList":[[2]],"options":{"composite":false,"declaration":true,"module":199,"moduleResolution":99,"skipLibCheck":true,"skipDefaultLibCheck":true},"referencedMap":[[3,1]],"emitDiagnosticsPerFile":[[3,[{"pos":34,"end":37,"code":4023,"category":1,"messageKey":"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023","messageArgs":["api","KyInstance","\"/home/src/workspaces/project/node_modules/ky/distribution/index\""]}]]]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -156,6 +156,7 @@ export const api = ky.extend({}); "composite": false, "declaration": true, "module": 199, + "moduleResolution": 99, "skipLibCheck": true, "skipDefaultLibCheck": true }, @@ -183,7 +184,7 @@ export const api = ky.extend({}); ] ] ], - "size": 1823 + "size": 1845 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/declarationEmit/when-declaration-file-used-inferred-type-from-referenced-project.js b/tsc/testdata/baselines/reference/tsbuild/declarationEmit/when-declaration-file-used-inferred-type-from-referenced-project.js index a7536c9484ae6..0d8dbc96f4882 100644 --- a/tsc/testdata/baselines/reference/tsbuild/declarationEmit/when-declaration-file-used-inferred-type-from-referenced-project.js +++ b/tsc/testdata/baselines/reference/tsbuild/declarationEmit/when-declaration-file-used-inferred-type-from-referenced-project.js @@ -85,7 +85,7 @@ export interface IThings { export {}; //// [/home/src/workspaces/project/packages/pkg1/lib/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f611077efa7cfdd7e90bebd6aef8d21e-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}","signature":"a9c3ba42ffd025bdbe473878c71e06db-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f611077efa7cfdd7e90bebd6aef8d21e-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}","signature":"a9c3ba42ffd025bdbe473878c71e06db-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./","paths":{"@fluentui/*":["./packages/*/src"]},"pathsBasePath":"../../.."},"latestChangedDtsFile":"./src/index.d.ts"} //// [/home/src/workspaces/project/packages/pkg1/lib/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -128,10 +128,16 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@fluentui/*": [ + "./packages/*/src" + ] + }, + "pathsBasePath": "../../.." }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1274 + "size": 1346 } //// [/home/src/workspaces/project/packages/pkg2/lib/src/index.d.ts] *new* export declare function fn4(): import("@fluentui/pkg1").IThing; @@ -143,7 +149,7 @@ export function fn4() { } //// [/home/src/workspaces/project/packages/pkg2/lib/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","../../pkg1/lib/src/index.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"a9c3ba42ffd025bdbe473878c71e06db-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}\n",{"version":"4d4febb98ed4514d6d06322111030719-import { IThings } from '@fluentui/pkg1';\nexport function fn4() {\n const a: IThings = { thing1: { a: 'b' } };\n return a.thing1;\n}","signature":"0a46e4305c5892e3fe0d5e79c8c48762-export declare function fn4(): import(\"@fluentui/pkg1\").IThing;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","../../pkg1/lib/src/index.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"a9c3ba42ffd025bdbe473878c71e06db-export interface IThing {\n a: string;\n}\nexport interface IThings {\n thing1: IThing;\n}\n",{"version":"4d4febb98ed4514d6d06322111030719-import { IThings } from '@fluentui/pkg1';\nexport function fn4() {\n const a: IThings = { thing1: { a: 'b' } };\n return a.thing1;\n}","signature":"0a46e4305c5892e3fe0d5e79c8c48762-export declare function fn4(): import(\"@fluentui/pkg1\").IThing;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"@fluentui/*":["./packages/*/src"]},"pathsBasePath":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} //// [/home/src/workspaces/project/packages/pkg2/lib/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -198,7 +204,13 @@ export function fn4() { ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@fluentui/*": [ + "./packages/*/src" + ] + }, + "pathsBasePath": "../../.." }, "referencedMap": { "../src/index.ts": [ @@ -206,7 +218,7 @@ export function fn4() { ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1496 + "size": 1568 } packages/pkg1/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/declarationEmitForReferencedProjectTypesSubpath/declaration-emit-names-referenced-project-type-via-types-subpath.js b/tsc/testdata/baselines/reference/tsbuild/declarationEmitForReferencedProjectTypesSubpath/declaration-emit-names-referenced-project-type-via-types-subpath.js index 62bdde37b2ff8..3931757b26915 100644 --- a/tsc/testdata/baselines/reference/tsbuild/declarationEmitForReferencedProjectTypesSubpath/declaration-emit-names-referenced-project-type-via-types-subpath.js +++ b/tsc/testdata/baselines/reference/tsbuild/declarationEmitForReferencedProjectTypesSubpath/declaration-emit-names-referenced-project-type-via-types-subpath.js @@ -107,7 +107,7 @@ interface Symbol { } declare const console: { log(msg: any): void; }; //// [/home/src/workspaces/solution/packages/consumer/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[5],"packageJsons":["./package.json","../dep/package.json"],"fileNames":["lib.es2026.full.d.ts","../dep/types/themes/componentTypes/formFieldLayout.d.ts","../dep/types/themes/componentTypes/index.d.ts","../dep/types/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2265bb6aae4ea44359eda1a1333669d7-export type FormFieldLayout = {\n textColor: string;\n fontSize: string;\n};\nexport default FormFieldLayout;\n","262c77b15a9433c1a517a42af08dabc4-import type FormFieldLayout from \"./formFieldLayout.js\";\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout;\n};\n","8c960f82affa27b6eaa999ea3cdac3e7-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\";\nexport type { NewComponentTypes };\n",{"version":"0eb11471bc41fb5a80fd0098368e8295-import type { NewComponentTypes } from \"@scope/dep\"\ndeclare const c: NewComponentTypes\nexport const style = c.formFieldLayout()","signature":"9cca47ad36e3ee3df7f98a27c15d37b0-export declare const style: import(\"@scope/dep/types/themes/componentTypes/formFieldLayout.js\").FormFieldLayout;\n","impliedNodeFormat":1}],"fileIdsList":[[4],[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationDir":"./types","module":99,"outDir":"./types","rootDir":"./src","strict":true},"referencedMap":[[5,1],[4,2],[3,3]],"latestChangedDtsFile":"./types/index.d.ts"} +{"version":"FakeTSVersion","root":[5],"packageJsons":["./package.json","../dep/package.json"],"fileNames":["lib.es2026.full.d.ts","../dep/types/themes/componentTypes/formFieldLayout.d.ts","../dep/types/themes/componentTypes/index.d.ts","../dep/types/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2265bb6aae4ea44359eda1a1333669d7-export type FormFieldLayout = {\n textColor: string;\n fontSize: string;\n};\nexport default FormFieldLayout;\n","262c77b15a9433c1a517a42af08dabc4-import type FormFieldLayout from \"./formFieldLayout.js\";\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout;\n};\n","8c960f82affa27b6eaa999ea3cdac3e7-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\";\nexport type { NewComponentTypes };\n",{"version":"0eb11471bc41fb5a80fd0098368e8295-import type { NewComponentTypes } from \"@scope/dep\"\ndeclare const c: NewComponentTypes\nexport const style = c.formFieldLayout()","signature":"9cca47ad36e3ee3df7f98a27c15d37b0-export declare const style: import(\"@scope/dep/types/themes/componentTypes/formFieldLayout.js\").FormFieldLayout;\n","impliedNodeFormat":1}],"fileIdsList":[[4],[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationDir":"./types","module":99,"moduleResolution":100,"outDir":"./types","rootDir":"./src","strict":true},"referencedMap":[[5,1],[4,2],[3,3]],"latestChangedDtsFile":"./types/index.d.ts"} //// [/home/src/workspaces/solution/packages/consumer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -190,6 +190,7 @@ declare const console: { log(msg: any): void; }; "declaration": true, "declarationDir": "./types", "module": 99, + "moduleResolution": 100, "outDir": "./types", "rootDir": "./src", "strict": true @@ -206,13 +207,13 @@ declare const console: { log(msg: any): void; }; ] }, "latestChangedDtsFile": "./types/index.d.ts", - "size": 2200 + "size": 2223 } //// [/home/src/workspaces/solution/packages/consumer/types/index.d.ts] *new* export declare const style: import("@scope/dep/types/themes/componentTypes/formFieldLayout.js").FormFieldLayout; //// [/home/src/workspaces/solution/packages/dep/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["./package.json"],"fileNames":["lib.es2026.full.d.ts","./src/themes/componentTypes/formFieldLayout.ts","./src/themes/componentTypes/index.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d384c9df99c755540ca5330780b4f5e5-export type FormFieldLayout = {\n textColor: string\n fontSize: string\n}\nexport default FormFieldLayout","signature":"2265bb6aae4ea44359eda1a1333669d7-export type FormFieldLayout = {\n textColor: string;\n fontSize: string;\n};\nexport default FormFieldLayout;\n","impliedNodeFormat":1},{"version":"7e5adf3645b6325e5ba90d41821e4802-import type FormFieldLayout from \"./formFieldLayout.js\"\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout\n}","signature":"262c77b15a9433c1a517a42af08dabc4-import type FormFieldLayout from \"./formFieldLayout.js\";\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout;\n};\n","impliedNodeFormat":1},{"version":"aac956f8322a5530cde691c46bad3b7d-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\"\nexport type { NewComponentTypes }","signature":"8c960f82affa27b6eaa999ea3cdac3e7-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\";\nexport type { NewComponentTypes };\n","impliedNodeFormat":1}],"fileIdsList":[[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationDir":"./types","module":99,"outDir":"./types","rootDir":"./src","strict":true},"referencedMap":[[4,1],[3,2]],"latestChangedDtsFile":"./types/index.d.ts"} +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["./package.json"],"fileNames":["lib.es2026.full.d.ts","./src/themes/componentTypes/formFieldLayout.ts","./src/themes/componentTypes/index.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d384c9df99c755540ca5330780b4f5e5-export type FormFieldLayout = {\n textColor: string\n fontSize: string\n}\nexport default FormFieldLayout","signature":"2265bb6aae4ea44359eda1a1333669d7-export type FormFieldLayout = {\n textColor: string;\n fontSize: string;\n};\nexport default FormFieldLayout;\n","impliedNodeFormat":1},{"version":"7e5adf3645b6325e5ba90d41821e4802-import type FormFieldLayout from \"./formFieldLayout.js\"\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout\n}","signature":"262c77b15a9433c1a517a42af08dabc4-import type FormFieldLayout from \"./formFieldLayout.js\";\nexport type ComponentTypes = {\n formFieldLayout: () => FormFieldLayout;\n};\n","impliedNodeFormat":1},{"version":"aac956f8322a5530cde691c46bad3b7d-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\"\nexport type { NewComponentTypes }","signature":"8c960f82affa27b6eaa999ea3cdac3e7-import type { ComponentTypes as NewComponentTypes } from \"./themes/componentTypes/index.js\";\nexport type { NewComponentTypes };\n","impliedNodeFormat":1}],"fileIdsList":[[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"declarationDir":"./types","module":99,"moduleResolution":100,"outDir":"./types","rootDir":"./src","strict":true},"referencedMap":[[4,1],[3,2]],"latestChangedDtsFile":"./types/index.d.ts"} //// [/home/src/workspaces/solution/packages/dep/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -299,6 +300,7 @@ export declare const style: import("@scope/dep/types/themes/componentTypes/formF "declaration": true, "declarationDir": "./types", "module": 99, + "moduleResolution": 100, "outDir": "./types", "rootDir": "./src", "strict": true @@ -312,7 +314,7 @@ export declare const style: import("@scope/dep/types/themes/componentTypes/formF ] }, "latestChangedDtsFile": "./types/index.d.ts", - "size": 2384 + "size": 2407 } //// [/home/src/workspaces/solution/packages/dep/types/index.d.ts] *new* import type { ComponentTypes as NewComponentTypes } from "./themes/componentTypes/index.js"; diff --git a/tsc/testdata/baselines/reference/tsbuild/dependencyUpdate/rebuilds-when-absolute-non-root-dependency-is-updated.js b/tsc/testdata/baselines/reference/tsbuild/dependencyUpdate/rebuilds-when-absolute-non-root-dependency-is-updated.js index 44ea971d3d489..4032e5918cdab 100644 --- a/tsc/testdata/baselines/reference/tsbuild/dependencyUpdate/rebuilds-when-absolute-non-root-dependency-is-updated.js +++ b/tsc/testdata/baselines/reference/tsbuild/dependencyUpdate/rebuilds-when-absolute-non-root-dependency-is-updated.js @@ -60,7 +60,7 @@ import { myValue } from "abs-dep"; export const value = myValue; //// [C:/work/project/dist/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"4384f7716e1c7cc875e39624007cccc9-export declare const myValue: string;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"4384f7716e1c7cc875e39624007cccc9-export declare const myValue: string;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"strict":true,"pathsBasePath":".."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -116,7 +116,13 @@ export const value = myValue; "options": { "composite": true, "outDir": "./", - "strict": true + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -124,7 +130,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1347 + "size": 1414 } tsconfig.json:: @@ -160,7 +166,7 @@ Found 1 error in src/index.ts:2 //// [C:/work/project/dist/src/index.js] *rewrite with same content* //// [C:/work/project/dist/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"936f1acf4d15f440cdb2eb27f80fb9c9-export declare const myValue: number;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":48,"end":53,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["number","string"]}]]],"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"936f1acf4d15f440cdb2eb27f80fb9c9-export declare const myValue: number;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"strict":true,"pathsBasePath":".."},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":48,"end":53,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["number","string"]}]]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -216,7 +222,13 @@ Found 1 error in src/index.ts:2 "options": { "composite": true, "outDir": "./", - "strict": true + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -242,7 +254,7 @@ Found 1 error in src/index.ts:2 ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1518 + "size": 1585 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-false-to-true.js b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-false-to-true.js new file mode 100644 index 0000000000000..9c29e7b0a8ce1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-false-to-true.js @@ -0,0 +1,563 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/consumer/index.ts] *new* +import { result } from "../producer"; +export const value: typeof result = { value: undefined }; +//// [/home/src/workspaces/project/consumer/tsconfig.json] *new* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "composite": true, + "emitDeclarationOnly": true, + "lib": ["es5"], + "outDir": "dist" + }, + "references": [{ "path": "../producer" }], + "files": ["index.ts"] +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function make(): { value?: T }; +export const result = make(); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": false, + "composite": true, + "emitDeclarationOnly": true, + "target": "es2020", + "module": "esnext", + "lib": ["es5"], + "outDir": "dist" + }, + "files": ["index.ts"] +} + +tsgo --build consumer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because output file 'consumer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/consumer/dist/index.d.ts] *new* +import { result } from "../producer"; +export declare const value: typeof result; + +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","../../producer/dist/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n",{"version":"fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };","signature":"f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../../producer/dist/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../producer/dist/index.d.ts", + "version": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../producer/dist/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "outDir": "./", + "strict": true + }, + "referencedMap": { + "../index.ts": [ + "../../producer/dist/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1504 +} +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value?: string | undefined; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es5.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();","signature":"501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":false,"module":99,"outDir":"./","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": false, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1313 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/consumer/index.ts + + +Edit [0]:: toggle exactOptionalPropertyTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "composite": true, + "emitDeclarationOnly": true, + "target": "es2020", + "module": "esnext", + "lib": ["es5"], + "outDir": "dist" + }, + "files": ["index.ts"] +} + +tsgo --build consumer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because output 'consumer/dist/tsconfig.tsbuildinfo' is older than input 'producer/dist/index.d.ts' + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +consumer/index.ts:2:14 - error TS2375: Type '{ value: undefined; }' is not assignable to type '{ value?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties. + Types of property 'value' are incompatible. + Type 'undefined' is not assignable to type 'string'. + +2 export const value: typeof result = { value: undefined }; +   ~~~~~ + + +Found 1 error in consumer/index.ts:2 + +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","../../producer/dist/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n",{"version":"fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };","signature":"f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":51,"end":56,"code":2375,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375","messageArgs":["{ value: undefined; }","{ value?: string; }"],"messageChain":[{"pos":51,"end":56,"code":2326,"category":1,"messageKey":"Types_of_property_0_are_incompatible_2326","messageArgs":["value"],"messageChain":[{"pos":51,"end":56,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["undefined","string"]}]}]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../../producer/dist/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../producer/dist/index.d.ts", + "version": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../producer/dist/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "outDir": "./", + "strict": true + }, + "referencedMap": { + "../index.ts": [ + "../../producer/dist/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 51, + "end": 56, + "code": 2375, + "category": 1, + "messageKey": "Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375", + "messageArgs": [ + "{ value: undefined; }", + "{ value?: string; }" + ], + "messageChain": [ + { + "pos": 51, + "end": 56, + "code": 2326, + "category": 1, + "messageKey": "Types_of_property_0_are_incompatible_2326", + "messageArgs": [ + "value" + ], + "messageChain": [ + { + "pos": 51, + "end": 56, + "code": 2322, + "category": 1, + "messageKey": "Type_0_is_not_assignable_to_type_1_2322", + "messageArgs": [ + "undefined", + "string" + ] + } + ] + } + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 2054 +} +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value?: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es5.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();","signature":"466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"outDir":"./","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1300 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/dist/index.d.ts +(computed .d.ts) /home/src/workspaces/project/consumer/index.ts + + +Edit [1]:: no change + +tsgo --build consumer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because buildinfo file 'consumer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +consumer/index.ts:2:14 - error TS2375: Type '{ value: undefined; }' is not assignable to type '{ value?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties. + Types of property 'value' are incompatible. + Type 'undefined' is not assignable to type 'string'. + +2 export const value: typeof result = { value: undefined }; +   ~~~~~ + + +Found 1 error in consumer/index.ts:2 + + +consumer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: force rebuild with the same compiler options + +tsgo --build consumer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +consumer/index.ts:2:14 - error TS2375: Type '{ value: undefined; }' is not assignable to type '{ value?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties. + Types of property 'value' are incompatible. + Type 'undefined' is not assignable to type 'string'. + +2 export const value: typeof result = { value: undefined }; +   ~~~~~ + + +Found 1 error in consumer/index.ts:2 + +//// [/home/src/workspaces/project/consumer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/consumer/index.ts + + +Edit [3]:: no change + +tsgo --build consumer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because buildinfo file 'consumer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +consumer/index.ts:2:14 - error TS2375: Type '{ value: undefined; }' is not assignable to type '{ value?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties. + Types of property 'value' are incompatible. + Type 'undefined' is not assignable to type 'string'. + +2 export const value: typeof result = { value: undefined }; +   ~~~~~ + + +Found 1 error in consumer/index.ts:2 + + +consumer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-true-to-false.js b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-true-to-false.js new file mode 100644 index 0000000000000..c2ecd5c610254 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-true-to-false.js @@ -0,0 +1,523 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/consumer/index.ts] *new* +import { result } from "../producer"; +export const value: typeof result = { value: undefined }; +//// [/home/src/workspaces/project/consumer/tsconfig.json] *new* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "composite": true, + "emitDeclarationOnly": true, + "lib": ["es5"], + "outDir": "dist" + }, + "references": [{ "path": "../producer" }], + "files": ["index.ts"] +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function make(): { value?: T }; +export const result = make(); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "composite": true, + "emitDeclarationOnly": true, + "target": "es2020", + "module": "esnext", + "lib": ["es5"], + "outDir": "dist" + }, + "files": ["index.ts"] +} + +tsgo --build consumer --verbose +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output file 'producer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because output file 'consumer/dist/tsconfig.tsbuildinfo' does not exist + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +consumer/index.ts:2:14 - error TS2375: Type '{ value: undefined; }' is not assignable to type '{ value?: string; }' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties. + Types of property 'value' are incompatible. + Type 'undefined' is not assignable to type 'string'. + +2 export const value: typeof result = { value: undefined }; +   ~~~~~ + + +Found 1 error in consumer/index.ts:2 + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/consumer/dist/index.d.ts] *new* +import { result } from "../producer"; +export declare const value: typeof result; + +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","../../producer/dist/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n",{"version":"fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };","signature":"f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":51,"end":56,"code":2375,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375","messageArgs":["{ value: undefined; }","{ value?: string; }"],"messageChain":[{"pos":51,"end":56,"code":2326,"category":1,"messageKey":"Types_of_property_0_are_incompatible_2326","messageArgs":["value"],"messageChain":[{"pos":51,"end":56,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["undefined","string"]}]}]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../../producer/dist/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../producer/dist/index.d.ts", + "version": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../producer/dist/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "outDir": "./", + "strict": true + }, + "referencedMap": { + "../index.ts": [ + "../../producer/dist/index.d.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 51, + "end": 56, + "code": 2375, + "category": 1, + "messageKey": "Type_0_is_not_assignable_to_type_1_with_exactOptionalPropertyTypes_Colon_true_Consider_adding_undefi_2375", + "messageArgs": [ + "{ value: undefined; }", + "{ value?: string; }" + ], + "messageChain": [ + { + "pos": 51, + "end": 56, + "code": 2326, + "category": 1, + "messageKey": "Types_of_property_0_are_incompatible_2326", + "messageArgs": [ + "value" + ], + "messageChain": [ + { + "pos": 51, + "end": 56, + "code": 2322, + "category": 1, + "messageKey": "Type_0_is_not_assignable_to_type_1_2322", + "messageArgs": [ + "undefined", + "string" + ] + } + ] + } + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 2054 +} +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value?: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es5.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();","signature":"466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"module":99,"outDir":"./","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "466ccd98668ec437fb7b9f660a2f9240-export declare const result: {\n value?: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1300 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/consumer/index.ts + + +Edit [0]:: toggle exactOptionalPropertyTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": false, + "composite": true, + "emitDeclarationOnly": true, + "target": "es2020", + "module": "esnext", + "lib": ["es5"], + "outDir": "dist" + }, + "files": ["index.ts"] +} + +tsgo --build consumer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is out of date because output 'producer/dist/tsconfig.tsbuildinfo' is older than input 'producer/tsconfig.json' + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is out of date because buildinfo file 'consumer/dist/tsconfig.tsbuildinfo' indicates that program needs to report errors. + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","../../producer/dist/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n",{"version":"fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };","signature":"f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../../producer/dist/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../producer/dist/index.d.ts", + "version": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fabbe8df4bcbb914d7641c48938c0461-import { result } from \"../producer\";\nexport const value: typeof result = { value: undefined };", + "signature": "f23c37bb4bdf4d159c0bfe56864fad40-import { result } from \"../producer\";\nexport declare const value: typeof result;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../producer/dist/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": true, + "outDir": "./", + "strict": true + }, + "referencedMap": { + "../index.ts": [ + "../../producer/dist/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1504 +} +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value?: string | undefined; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es5.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();","signature":"501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"exactOptionalPropertyTypes":false,"module":99,"outDir":"./","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ce71d49ec9c731eb30d4d2ca52fd9246-declare function make(): { value?: T };\nexport const result = make();", + "signature": "501ff75cdc5d82b297716d1b95ac0851-export declare const result: {\n value?: string | undefined;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "exactOptionalPropertyTypes": false, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1313 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/dist/index.d.ts +(computed .d.ts) /home/src/workspaces/project/consumer/index.ts + + +Edit [1]:: no change + +tsgo --build consumer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is up to date because newest input 'consumer/index.ts' is older than output 'consumer/dist/tsconfig.tsbuildinfo' + + + + +Edit [2]:: force rebuild with the same compiler options + +tsgo --build consumer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'consumer/tsconfig.json'... + +//// [/home/src/workspaces/project/consumer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + +consumer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/dist/index.d.ts +*refresh* /home/src/workspaces/project/consumer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/consumer/index.ts + + +Edit [3]:: no change + +tsgo --build consumer --verbose +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + * consumer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is up to date because newest input 'producer/index.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + +[HH:MM:SS AM] Project 'consumer/tsconfig.json' is up to date because newest input 'consumer/index.ts' is older than output 'consumer/dist/tsconfig.tsbuildinfo' + + diff --git a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromMonorepoReference/inferred-type-from-referenced-project-that-references-another-project-in-monorepo.js b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromMonorepoReference/inferred-type-from-referenced-project-that-references-another-project-in-monorepo.js index f46592f3d930f..00f06ba4ce8b7 100644 --- a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromMonorepoReference/inferred-type-from-referenced-project-that-references-another-project-in-monorepo.js +++ b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromMonorepoReference/inferred-type-from-referenced-project-that-references-another-project-in-monorepo.js @@ -178,7 +178,7 @@ declare class MyClass { export { MyClass }; //// [/home/src/workspaces/solution/packages/package-a/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[4],"packageJsons":["./package.json","../package-b/package.json","../package-c/package.json"],"fileNames":["lib.es2022.full.d.ts","../package-c/out/index.d.ts","../package-b/out/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n","c244312b1cf9f2fd4ddd2d16bb44d0b9-import type { MyType } from \"package-c\";\nexport declare function createThing(input: MyType): MyType;\n",{"version":"1b8e37ecd837c2f357c793c86828b133-import { createThing } from \"package-b\";\n\nclass MyClass {\n public thing = createThing({ id: \"1\", name: \"test\", enabled: true });\n}\n\nexport { MyClass };","signature":"f0d3d8e75bf995728f62a7d715cdf8a8-declare class MyClass {\n thing: import(\"package-c\").MyType;\n}\nexport { MyClass };\n","impliedNodeFormat":1}],"fileIdsList":[[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./out","rootDir":"./src","target":9},"referencedMap":[[4,1],[3,2]],"latestChangedDtsFile":"./out/index.d.ts"} +{"version":"FakeTSVersion","root":[4],"packageJsons":["./package.json","../package-b/package.json","../package-c/package.json"],"fileNames":["lib.es2022.full.d.ts","../package-c/out/index.d.ts","../package-b/out/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n","c244312b1cf9f2fd4ddd2d16bb44d0b9-import type { MyType } from \"package-c\";\nexport declare function createThing(input: MyType): MyType;\n",{"version":"1b8e37ecd837c2f357c793c86828b133-import { createThing } from \"package-b\";\n\nclass MyClass {\n public thing = createThing({ id: \"1\", name: \"test\", enabled: true });\n}\n\nexport { MyClass };","signature":"f0d3d8e75bf995728f62a7d715cdf8a8-declare class MyClass {\n thing: import(\"package-c\").MyType;\n}\nexport { MyClass };\n","impliedNodeFormat":1}],"fileIdsList":[[3],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./out","rootDir":"./src","target":9},"referencedMap":[[4,1],[3,2]],"latestChangedDtsFile":"./out/index.d.ts"} //// [/home/src/workspaces/solution/packages/package-a/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -251,6 +251,7 @@ export { MyClass }; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./out", "rootDir": "./src", "target": 9 @@ -264,14 +265,14 @@ export { MyClass }; ] }, "latestChangedDtsFile": "./out/index.d.ts", - "size": 1896 + "size": 1919 } //// [/home/src/workspaces/solution/packages/package-b/out/index.d.ts] *new* import type { MyType } from "package-c"; export declare function createThing(input: MyType): MyType; //// [/home/src/workspaces/solution/packages/package-b/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"packageJsons":["./package.json","../package-c/package.json"],"fileNames":["lib.es2022.full.d.ts","../package-c/out/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n",{"version":"fbb82e716b8d6d09c2f530e11f7c8614-import type { MyType } from \"package-c\";\n\nexport function createThing(input: MyType): MyType {\n return { ...input };\n}","signature":"c244312b1cf9f2fd4ddd2d16bb44d0b9-import type { MyType } from \"package-c\";\nexport declare function createThing(input: MyType): MyType;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./out","rootDir":"./src","target":9},"referencedMap":[[3,1]],"latestChangedDtsFile":"./out/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"packageJsons":["./package.json","../package-c/package.json"],"fileNames":["lib.es2022.full.d.ts","../package-c/out/index.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n",{"version":"fbb82e716b8d6d09c2f530e11f7c8614-import type { MyType } from \"package-c\";\n\nexport function createThing(input: MyType): MyType {\n return { ...input };\n}","signature":"c244312b1cf9f2fd4ddd2d16bb44d0b9-import type { MyType } from \"package-c\";\nexport declare function createThing(input: MyType): MyType;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./out","rootDir":"./src","target":9},"referencedMap":[[3,1]],"latestChangedDtsFile":"./out/index.d.ts"} //// [/home/src/workspaces/solution/packages/package-b/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -333,6 +334,7 @@ export declare function createThing(input: MyType): MyType; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./out", "rootDir": "./src", "target": 9 @@ -343,7 +345,7 @@ export declare function createThing(input: MyType): MyType; ] }, "latestChangedDtsFile": "./out/index.d.ts", - "size": 1662 + "size": 1685 } //// [/home/src/workspaces/solution/packages/package-c/out/index.d.ts] *new* export interface MyType { @@ -353,7 +355,7 @@ export interface MyType { } //// [/home/src/workspaces/solution/packages/package-c/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"packageJsons":["./package.json"],"fileNames":["lib.es2022.full.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"998713b32693f1c4f45ac4bad0f3285c-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}","signature":"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./out","rootDir":"./src","target":9},"latestChangedDtsFile":"./out/index.d.ts"} +{"version":"FakeTSVersion","root":[2],"packageJsons":["./package.json"],"fileNames":["lib.es2022.full.d.ts","./src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"998713b32693f1c4f45ac4bad0f3285c-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}","signature":"fda98a6734eab276b5c9c8694ee117da-export interface MyType {\n id: string;\n name: string;\n enabled: boolean;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./out","rootDir":"./src","target":9},"latestChangedDtsFile":"./out/index.d.ts"} //// [/home/src/workspaces/solution/packages/package-c/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -402,12 +404,13 @@ export interface MyType { "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./out", "rootDir": "./src", "target": 9 }, "latestChangedDtsFile": "./out/index.d.ts", - "size": 1379 + "size": 1402 } packages/package-c/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module-with-isolatedModules.js b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module-with-isolatedModules.js index 02efabc94f2a3..115ac92121eba 100644 --- a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module-with-isolatedModules.js +++ b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module-with-isolatedModules.js @@ -184,7 +184,7 @@ var bar_1 = require("./bar"); Object.defineProperty(exports, "bar", { enumerable: true, get: function () { return __importDefault(bar_1).default; } }); //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -293,6 +293,7 @@ Object.defineProperty(exports, "bar", { enumerable: true, get: function () { ret ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -313,7 +314,7 @@ Object.defineProperty(exports, "bar", { enumerable: true, get: function () { ret "../lazyIndex.ts", "../index.ts" ], - "size": 3166 + "size": 3189 } tsconfig.json:: @@ -377,7 +378,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -486,6 +487,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -506,7 +508,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" "../lazyIndex.ts", "../index.ts" ], - "size": 3127 + "size": 3150 } tsconfig.json:: @@ -569,7 +571,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -678,6 +680,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -698,7 +701,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( "../lazyIndex.ts", "../index.ts" ], - "size": 3166 + "size": 3189 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module.js b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module.js index 81098d5875a68..46d97316d7785 100644 --- a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module.js +++ b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/inferred-type-from-transitive-module.js @@ -184,7 +184,7 @@ var bar_1 = require("./bar"); Object.defineProperty(exports, "bar", { enumerable: true, get: function () { return __importDefault(bar_1).default; } }); //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":false,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -293,6 +293,7 @@ Object.defineProperty(exports, "bar", { enumerable: true, get: function () { ret ], "options": { "declaration": true, + "isolatedModules": false, "outDir": "./", "target": 1 }, @@ -313,7 +314,7 @@ Object.defineProperty(exports, "bar", { enumerable: true, get: function () { ret "../lazyIndex.ts", "../index.ts" ], - "size": 3166 + "size": 3190 } tsconfig.json:: @@ -378,7 +379,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/lazyIndex.js] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":false,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -487,6 +488,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" ], "options": { "declaration": true, + "isolatedModules": false, "outDir": "./", "target": 1 }, @@ -507,7 +509,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" "../lazyIndex.ts", "../index.ts" ], - "size": 3127 + "size": 3151 } tsconfig.json:: @@ -571,7 +573,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/lazyIndex.js] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7c5cf52aadc65791601164da964e3110-export { default as bar } from './bar';","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":false,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -680,6 +682,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( ], "options": { "declaration": true, + "isolatedModules": false, "outDir": "./", "target": 1 }, @@ -700,7 +703,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( "../lazyIndex.ts", "../index.ts" ], - "size": 3166 + "size": 3190 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js index 9036a084b0863..09a1892c2b575 100644 --- a/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js +++ b/tsc/testdata/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/reports-errors-in-files-affected-by-change-in-signature-with-isolatedModules.js @@ -187,7 +187,7 @@ const bar_2 = __importDefault(require("./bar")); (0, bar_2.default)("hello"); //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -296,6 +296,7 @@ const bar_2 = __importDefault(require("./bar")); ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -316,7 +317,7 @@ const bar_2 = __importDefault(require("./bar")); "../lazyIndex.ts", "../index.ts" ], - "size": 3222 + "size": 3245 } tsconfig.json:: @@ -380,7 +381,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -489,6 +490,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -509,7 +511,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" "../lazyIndex.ts", "../index.ts" ], - "size": 3183 + "size": 3206 } tsconfig.json:: @@ -572,7 +574,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"76a83326d4e197789f8362e994577f53-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(param: string): void {\n});","signature":"16f73d7e0c200fed165b8fa7d55fefbf-declare const _default: (param: string) => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"421664a6306d66498ea4a2e3065214b1-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<(param: string) => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -681,6 +683,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -701,7 +704,7 @@ export declare const lazyBar: LazyAction<(param: string) => void, typeof import( "../lazyIndex.ts", "../index.ts" ], - "size": 3222 + "size": 3245 } tsconfig.json:: @@ -764,7 +767,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" //// [/home/src/workspaces/project/obj/lazyIndex.d.ts] *rewrite with same content* //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"60603312318c6195044a5691dcb10507-export { default as bar } from './bar';import { default as bar } from './bar';\nbar(\"hello\");","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -873,6 +876,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -893,7 +897,7 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" "../lazyIndex.ts", "../index.ts" ], - "size": 3183 + "size": 3206 } tsconfig.json:: @@ -947,7 +951,7 @@ const bar_2 = __importDefault(require("./bar")); (0, bar_2.default)(); //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d72f752a863fc77fab29beff184a4fb0-export { default as bar } from './bar';import { default as bar } from './bar';\nbar();","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} +{"version":"FakeTSVersion","errors":true,"root":[[2,6]],"fileNames":["lib.d.ts","../bar.ts","../bundling.ts","../global.d.ts","../lazyIndex.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"0bd8823a281968531aa051fd0166b47a-interface RawAction {\n (...args: any[]): Promise | void;\n}\ninterface ActionFactory {\n (target: T): T;\n}\ndeclare function foo(): ActionFactory;\nexport default foo()(function foobar(): void {\n});","signature":"6cd64ed70c0d0d178b062e1470eb929d-declare const _default: () => void;\nexport default _default;\n","impliedNodeFormat":1},{"version":"16bf1b870d8b21533eda3b1f1b87cd77-export class LazyModule {\n constructor(private importCallback: () => Promise) {}\n}\n\nexport class LazyAction<\n TAction extends (...args: any[]) => any,\n TModule\n> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction) {\n }\n}","signature":"5e4757586f6f5d494b6763f1e808313a-export declare class LazyModule {\n private importCallback;\n constructor(importCallback: () => Promise);\n}\nexport declare class LazyAction any, TModule> {\n constructor(_lazyModule: LazyModule, _getter: (module: TModule) => TAction);\n}\n","impliedNodeFormat":1},{"version":"9c9274fd70d574f2b4b68a2891bd4c47-interface PromiseConstructor {\n new (): Promise;\n}\ndeclare var Promise: PromiseConstructor;\ninterface Promise {\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d72f752a863fc77fab29beff184a4fb0-export { default as bar } from './bar';import { default as bar } from './bar';\nbar();","signature":"3a848e147ba2aebbd888c3c7bbab715b-export { default as bar } from './bar';\n","impliedNodeFormat":1},{"version":"d552d2a19fa05b15aa33018233d09810-import { LazyAction, LazyModule } from './bundling';\nconst lazyModule = new LazyModule(() =>\n import('./lazyIndex')\n);\nexport const lazyBar = new LazyAction(lazyModule, m => m.bar);","signature":"58c7056d7920602a0f958afefa15677d-import { LazyAction } from './bundling';\nexport declare const lazyBar: LazyAction<() => void, typeof import(\"./lazyIndex\")>;\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2]],"options":{"declaration":true,"isolatedModules":true,"outDir":"./","target":1},"referencedMap":[[6,1],[5,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6]} //// [/home/src/workspaces/project/obj/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -1056,6 +1060,7 @@ const bar_2 = __importDefault(require("./bar")); ], "options": { "declaration": true, + "isolatedModules": true, "outDir": "./", "target": 1 }, @@ -1076,7 +1081,7 @@ const bar_2 = __importDefault(require("./bar")); "../lazyIndex.ts", "../index.ts" ], - "size": 3174 + "size": 3197 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config-with-libReplacement.js b/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config-with-libReplacement.js index fb711f4507c06..621a43cff56df 100644 --- a/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config-with-libReplacement.js +++ b/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config-with-libReplacement.js @@ -449,7 +449,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -589,10 +589,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2595 + "size": 2623 } //// [/home/src/workspace/projects/project2/index.d.ts] *new* export declare const y = 10; diff --git a/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config.js b/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config.js index 656df5872398f..8307230312689 100644 --- a/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config.js +++ b/tsc/testdata/baselines/reference/tsbuild/libraryResolution/with-config.js @@ -212,7 +212,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -346,10 +346,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2218 + "size": 2246 } //// [/home/src/workspace/projects/project2/index.d.ts] *new* export declare const y = 10; diff --git a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolution-from-d.ts-of-referenced-project.js b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolution-from-d.ts-of-referenced-project.js index b36940c54c909..54cad8e442af0 100644 --- a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolution-from-d.ts-of-referenced-project.js +++ b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolution-from-d.ts-of-referenced-project.js @@ -185,7 +185,7 @@ export interface ValueProducerFromTs { Object.defineProperty(exports, "__esModule", { value: true }); //// [/home/src/workspaces/project/producer/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[3,4]],"fileNames":["lib.es2026.full.d.ts","../common.d.ts","./in-js.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"3a9dc77bc99684cad72839382a1f46cb-export type OnValue = (value: number) => void","7677191ddc32f3fe5aa447395ff0553a-import { OnValue } from \"@common\"\nexport interface ValueProducerDeclaration {\n onValue: OnValue;\n}",{"version":"3bb4cb1dd0764fa7c558b11ba246518a-export { ValueProducerDeclaration } from \"./in-js\"\nimport { OnValue } from \"@common\"\nexport interface ValueProducerFromTs {\n onValue: OnValue;\n}","signature":"846f65cd8d68b44b74d0de4a41b17245-export { ValueProducerDeclaration } from \"./in-js\";\nimport { OnValue } from \"@common\";\nexport interface ValueProducerFromTs {\n onValue: OnValue;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[2,3]],"options":{"composite":true,"module":199,"strict":true},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[3,4]],"fileNames":["lib.es2026.full.d.ts","../common.d.ts","./in-js.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"3a9dc77bc99684cad72839382a1f46cb-export type OnValue = (value: number) => void","7677191ddc32f3fe5aa447395ff0553a-import { OnValue } from \"@common\"\nexport interface ValueProducerDeclaration {\n onValue: OnValue;\n}",{"version":"3bb4cb1dd0764fa7c558b11ba246518a-export { ValueProducerDeclaration } from \"./in-js\"\nimport { OnValue } from \"@common\"\nexport interface ValueProducerFromTs {\n onValue: OnValue;\n}","signature":"846f65cd8d68b44b74d0de4a41b17245-export { ValueProducerDeclaration } from \"./in-js\";\nimport { OnValue } from \"@common\";\nexport interface ValueProducerFromTs {\n onValue: OnValue;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[2,3]],"options":{"composite":true,"module":199,"moduleResolution":99,"paths":{"@common":["../common.d.ts"]},"strict":true,"pathsBasePath":"./"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -256,7 +256,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); "options": { "composite": true, "module": 199, - "strict": true + "moduleResolution": 99, + "paths": { + "@common": [ + "../common.d.ts" + ] + }, + "strict": true, + "pathsBasePath": "./" }, "referencedMap": { "./in-js.d.ts": [ @@ -268,7 +275,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1713 + "size": 1795 } producer/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly-with-preserveSymlinks.js b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly-with-preserveSymlinks.js index e06fbe4af7d46..4fac0c45ea771 100644 --- a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly-with-preserveSymlinks.js +++ b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly-with-preserveSymlinks.js @@ -157,7 +157,7 @@ export type { TheNum } from 'const'; export {}; //// [/user/username/projects/myproject/packages/pkg2/build/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,3]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../const.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be0f939ab1143e4064a3742586332724-export type TheNum = 42;","signature":"56e2d69d2edd1f0edd1a64ecfdf6de0d-export type TheNum = 42;\n","impliedNodeFormat":1},{"version":"0b8e978a1e274cdc446fbbcbc9e78724-export type { TheNum } from 'const';","signature":"1a74e021c93cb748502ffc92156e3427-export type { TheNum } from 'const';\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[2,3]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../const.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be0f939ab1143e4064a3742586332724-export type TheNum = 42;","signature":"56e2d69d2edd1f0edd1a64ecfdf6de0d-export type TheNum = 42;\n","impliedNodeFormat":1},{"version":"0b8e978a1e274cdc446fbbcbc9e78724-export type { TheNum } from 'const';","signature":"1a74e021c93cb748502ffc92156e3427-export type { TheNum } from 'const';\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"const":["./const"]},"pathsBasePath":".."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} //// [/user/username/projects/myproject/packages/pkg2/build/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -224,7 +224,13 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "const": [ + "./const" + ] + }, + "pathsBasePath": ".." }, "referencedMap": { "../index.ts": [ @@ -232,7 +238,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1411 + "size": 1462 } packages/pkg2/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly.js b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly.js index ff2ed0caa4305..aeb0379b0e571 100644 --- a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly.js +++ b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/resolves-specifier-in-output-declaration-file-from-referenced-project-correctly.js @@ -155,7 +155,7 @@ export type { TheNum } from 'const'; export {}; //// [/user/username/projects/myproject/packages/pkg2/build/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,3]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../const.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be0f939ab1143e4064a3742586332724-export type TheNum = 42;","signature":"56e2d69d2edd1f0edd1a64ecfdf6de0d-export type TheNum = 42;\n","impliedNodeFormat":1},{"version":"0b8e978a1e274cdc446fbbcbc9e78724-export type { TheNum } from 'const';","signature":"1a74e021c93cb748502ffc92156e3427-export type { TheNum } from 'const';\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[2,3]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../const.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"be0f939ab1143e4064a3742586332724-export type TheNum = 42;","signature":"56e2d69d2edd1f0edd1a64ecfdf6de0d-export type TheNum = 42;\n","impliedNodeFormat":1},{"version":"0b8e978a1e274cdc446fbbcbc9e78724-export type { TheNum } from 'const';","signature":"1a74e021c93cb748502ffc92156e3427-export type { TheNum } from 'const';\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"const":["./const"]},"pathsBasePath":".."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} //// [/user/username/projects/myproject/packages/pkg2/build/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -222,7 +222,13 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "const": [ + "./const" + ] + }, + "pathsBasePath": ".." }, "referencedMap": { "../index.ts": [ @@ -230,7 +236,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1411 + "size": 1462 } packages/pkg2/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/type-reference-resolution-uses-correct-options-for-different-resolution-options-referenced-project.js b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/type-reference-resolution-uses-correct-options-for-different-resolution-options-referenced-project.js index 7d4c608dbb3b9..ba62267a2859c 100644 --- a/tsc/testdata/baselines/reference/tsbuild/moduleResolution/type-reference-resolution-uses-correct-options-for-different-resolution-options-referenced-project.js +++ b/tsc/testdata/baselines/reference/tsbuild/moduleResolution/type-reference-resolution-uses-correct-options-for-different-resolution-options-referenced-project.js @@ -82,7 +82,7 @@ interface Symbol { } declare const console: { log(msg: any): void; }; //// [/home/src/workspaces/project/packages/pkg1.tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","./pkg1_index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f4662ef3bd793790375f811e7f7d599f-export const theNum: TheNum = \"type1\";","signature":"dea6d3f907d93004db9004d6cea5698d-export declare const theNum: TheNum;\n","impliedNodeFormat":1}],"options":{"composite":true},"semanticDiagnosticsPerFile":[[2,[{"pos":21,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["TheNum"]}]]],"latestChangedDtsFile":"./pkg1_index.d.ts"} +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","./pkg1_index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"f4662ef3bd793790375f811e7f7d599f-export const theNum: TheNum = \"type1\";","signature":"dea6d3f907d93004db9004d6cea5698d-export declare const theNum: TheNum;\n","impliedNodeFormat":1}],"options":{"composite":true,"typeRoots":["./typeroot1"]},"semanticDiagnosticsPerFile":[[2,[{"pos":21,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["TheNum"]}]]],"latestChangedDtsFile":"./pkg1_index.d.ts"} //// [/home/src/workspaces/project/packages/pkg1.tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -124,7 +124,10 @@ declare const console: { log(msg: any): void; }; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "semanticDiagnosticsPerFile": [ [ @@ -144,7 +147,7 @@ declare const console: { log(msg: any): void; }; ] ], "latestChangedDtsFile": "./pkg1_index.d.ts", - "size": 1291 + "size": 1319 } //// [/home/src/workspaces/project/packages/pkg1_index.d.ts] *new* export declare const theNum: TheNum; @@ -153,7 +156,7 @@ export declare const theNum: TheNum; export const theNum = "type1"; //// [/home/src/workspaces/project/packages/pkg2.tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","./pkg2_index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5520638613ac947a47797c35d3ad9c4b-export const theNum: TheNum2 = \"type2\";","signature":"becc5ed6bddc5e1124b92e180d59b5e3-export declare const theNum: TheNum2;\n","impliedNodeFormat":1}],"options":{"composite":true},"semanticDiagnosticsPerFile":[[2,[{"pos":21,"end":28,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["TheNum2"]}]]],"latestChangedDtsFile":"./pkg2_index.d.ts"} +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","./pkg2_index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5520638613ac947a47797c35d3ad9c4b-export const theNum: TheNum2 = \"type2\";","signature":"becc5ed6bddc5e1124b92e180d59b5e3-export declare const theNum: TheNum2;\n","impliedNodeFormat":1}],"options":{"composite":true,"typeRoots":["./typeroot2"]},"semanticDiagnosticsPerFile":[[2,[{"pos":21,"end":28,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["TheNum2"]}]]],"latestChangedDtsFile":"./pkg2_index.d.ts"} //// [/home/src/workspaces/project/packages/pkg2.tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -195,7 +198,10 @@ export const theNum = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot2" + ] }, "semanticDiagnosticsPerFile": [ [ @@ -215,7 +221,7 @@ export const theNum = "type1"; ] ], "latestChangedDtsFile": "./pkg2_index.d.ts", - "size": 1294 + "size": 1322 } //// [/home/src/workspaces/project/packages/pkg2_index.d.ts] *new* export declare const theNum: TheNum2; diff --git a/tsc/testdata/baselines/reference/tsbuild/projectReferenceRedirect/uses-correct-project-reference-redirect-when-file-belongs-to-multiple-sub-projects.js b/tsc/testdata/baselines/reference/tsbuild/projectReferenceRedirect/uses-correct-project-reference-redirect-when-file-belongs-to-multiple-sub-projects.js index cbac523991879..bd2ff603dd8fd 100644 --- a/tsc/testdata/baselines/reference/tsbuild/projectReferenceRedirect/uses-correct-project-reference-redirect-when-file-belongs-to-multiple-sub-projects.js +++ b/tsc/testdata/baselines/reference/tsbuild/projectReferenceRedirect/uses-correct-project-reference-redirect-when-file-belongs-to-multiple-sub-projects.js @@ -129,7 +129,7 @@ export declare const platform: "web"; export declare const platform: "native"; //// [/home/src/workspaces/project/pkg/dist/tsconfig.native.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../src/util.native.ts","../index.native.ts","../src/util.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"c1f8db351239c175fbb3960262e28684-export const platform = \"native\" as const;","signature":"1f876b2eee633f65aa2e7817bfee737a-export declare const platform: \"native\";\n","impliedNodeFormat":1},{"version":"0a747b719fd37e7b799139c5f607d76b-export { platform } from \"./src/util\";","signature":"b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","impliedNodeFormat":1},{"version":"7941de8fb997b556c0afef2b586d7205-export const platform = \"web\" as const;","signature":"5082e4a38cc5cc308625a8754198c0e3-export declare const platform: \"web\";\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/util.d.ts"} +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","../src/util.native.ts","../index.native.ts","../src/util.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"c1f8db351239c175fbb3960262e28684-export const platform = \"native\" as const;","signature":"1f876b2eee633f65aa2e7817bfee737a-export declare const platform: \"native\";\n","impliedNodeFormat":1},{"version":"0a747b719fd37e7b799139c5f607d76b-export { platform } from \"./src/util\";","signature":"b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","impliedNodeFormat":1},{"version":"7941de8fb997b556c0afef2b586d7205-export const platform = \"web\" as const;","signature":"5082e4a38cc5cc308625a8754198c0e3-export declare const platform: \"web\";\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"customConditions":["react-native"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/util.d.ts"} //// [/home/src/workspaces/project/pkg/dist/tsconfig.native.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -208,10 +208,18 @@ export declare const platform: "native"; ] ], "options": { + "customConditions": [ + "react-native" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "strict": true }, @@ -221,10 +229,10 @@ export declare const platform: "native"; ] }, "latestChangedDtsFile": "./src/util.d.ts", - "size": 1766 + "size": 1857 } //// [/home/src/workspaces/project/pkg/dist/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,5]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","./src/util.native.d.ts","./index.native.d.ts","./src/util.d.ts","../index.ts","../src/util.native.ts","../index.native.ts","../src/util.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"1f876b2eee633f65aa2e7817bfee737a-export declare const platform: \"native\";\n","b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","5082e4a38cc5cc308625a8754198c0e3-export declare const platform: \"web\";\n",{"version":"0a747b719fd37e7b799139c5f607d76b-export { platform } from \"./src/util\";","signature":"b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","impliedNodeFormat":1}],"fileIdsList":[[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","strict":true},"referencedMap":[[3,1],[5,2]],"latestChangedDtsFile":"./index.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"packageJsons":["../package.json"],"fileNames":["lib.es2026.full.d.ts","./src/util.native.d.ts","./index.native.d.ts","./src/util.d.ts","../index.ts","../src/util.native.ts","../index.native.ts","../src/util.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"1f876b2eee633f65aa2e7817bfee737a-export declare const platform: \"native\";\n","b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","5082e4a38cc5cc308625a8754198c0e3-export declare const platform: \"web\";\n",{"version":"0a747b719fd37e7b799139c5f607d76b-export { platform } from \"./src/util\";","signature":"b065ccf77d7f1159c74552524b8d4d2b-export { platform } from \"./src/util\";\n","impliedNodeFormat":1}],"fileIdsList":[[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","strict":true},"referencedMap":[[3,1],[5,2]],"latestChangedDtsFile":"./index.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} //// [/home/src/workspaces/project/pkg/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -311,6 +319,7 @@ export declare const platform: "native"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "strict": true }, @@ -337,7 +346,7 @@ export declare const platform: "native"; "../src/util.ts" ] ], - "size": 1716 + "size": 1739 } //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* {"version":"FakeTSVersion","root":["./app.ts"],"packageJsons":["./pkg/package.json"]} diff --git a/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js b/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js index 618c4a650cc01..be9147f6975ae 100644 --- a/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js +++ b/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js @@ -126,7 +126,7 @@ console.log('Hello, world!'); export {}; //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -205,7 +205,13 @@ export {}; "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -227,7 +233,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -424,7 +430,7 @@ projects/shared/dist/src/random.d.ts projects/server/src/server.ts Matched by include pattern 'src/**/*.ts' in 'projects/server/tsconfig.json' //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -503,7 +509,13 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -525,7 +537,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -691,7 +703,7 @@ projects/shared/dist/src/myClass.d.ts projects/server/src/server.ts Matched by include pattern 'src/**/*.ts' in 'projects/server/tsconfig.json' //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[4,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[3,6]]} +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[4,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[3,6]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -761,7 +773,13 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -779,7 +797,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1603 + "size": 1678 } //// [/home/src/workspaces/solution/projects/shared/dist/tsconfig.tsbuildinfo] *modified* {"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/logging.ts","../src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"107fb48a395fd47390346ab424ebcc12-export function log(str: string) {\n console.log(str);\n}export const x = 10;","signature":"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","impliedNodeFormat":1},{"version":"22f018e389f527d25fc2ad2b2c6c9702-export class MyClass { }","signature":"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"latestChangedDtsFile":"./src/logging.d.ts"} diff --git a/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project.js b/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project.js index d65a370113f34..2b153a9a058f7 100644 --- a/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project.js +++ b/tsc/testdata/baselines/reference/tsbuild/roots/when-root-file-is-from-referenced-project.js @@ -126,7 +126,7 @@ console.log('Hello, world!'); export {}; //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -205,7 +205,13 @@ export {}; "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -227,7 +233,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -424,7 +430,7 @@ projects/shared/dist/src/random.d.ts Matched by include pattern '../shared/src/**/*.ts' in 'projects/server/tsconfig.json' File is output of project reference source 'projects/shared/src/random.ts' //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -503,7 +509,13 @@ projects/shared/dist/src/random.d.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -525,7 +537,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -691,7 +703,7 @@ projects/shared/dist/src/logging.d.ts Matched by include pattern '../shared/src/**/*.ts' in 'projects/server/tsconfig.json' File is output of project reference source 'projects/shared/src/logging.ts' //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[4,6]]} +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[4,6]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -761,7 +773,13 @@ projects/shared/dist/src/logging.d.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -779,7 +797,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1603 + "size": 1678 } //// [/home/src/workspaces/solution/projects/shared/dist/tsconfig.tsbuildinfo] *modified* {"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/logging.ts","../src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"107fb48a395fd47390346ab424ebcc12-export function log(str: string) {\n console.log(str);\n}export const x = 10;","signature":"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","impliedNodeFormat":1},{"version":"22f018e389f527d25fc2ad2b2c6c9702-export class MyClass { }","signature":"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"latestChangedDtsFile":"./src/logging.d.ts"} diff --git a/tsc/testdata/baselines/reference/tsbuild/sample/when-module-option-changes.js b/tsc/testdata/baselines/reference/tsbuild/sample/when-module-option-changes.js index 25af58a691836..601c0cbbaa223 100644 --- a/tsc/testdata/baselines/reference/tsbuild/sample/when-module-option-changes.js +++ b/tsc/testdata/baselines/reference/tsbuild/sample/when-module-option-changes.js @@ -275,4 +275,8 @@ Output:: core/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /user/username/projects/sample1/core/anotherModule.ts +*refresh* /user/username/projects/sample1/core/index.ts +*refresh* /user/username/projects/sample1/core/some_decl.d.ts Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuild/sample/when-target-option-changes.js b/tsc/testdata/baselines/reference/tsbuild/sample/when-target-option-changes.js index 65bc6c48a2227..661c06087d1b6 100644 --- a/tsc/testdata/baselines/reference/tsbuild/sample/when-target-option-changes.js +++ b/tsc/testdata/baselines/reference/tsbuild/sample/when-target-option-changes.js @@ -254,7 +254,7 @@ function leftPad(s, n) { return s + n; } function multiply(a, b) { return a * b; } //// [/user/username/projects/sample1/core/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","errors":true,"root":[[3,5]],"fileNames":["lib.d.ts","lib.esnext.d.ts","./anotherModule.ts","./index.ts","./some_decl.d.ts"],"fileInfos":["77c880b8984a58da26cd0cab7e052e50-/// \n/// ",{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"19cd44ed7278957051fca663f821c916-export const World = \"hello\";","2753a1085d587a7d57069e1105af24ec-export const someString: string = \"HELLO WORLD\";\nexport function leftPad(s: string, n: number) { return s + n; }\nexport function multiply(a: number, b: number) { return a * b; }",{"version":"6ceab83400a6167be2fb5feab881ded0-declare const dts: any;","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"target":1},"semanticDiagnosticsPerFile":[1]} +{"version":"FakeTSVersion","errors":true,"root":[[3,5]],"fileNames":["lib.d.ts","lib.esnext.d.ts","./anotherModule.ts","./index.ts","./some_decl.d.ts"],"fileInfos":["77c880b8984a58da26cd0cab7e052e50-/// \n/// ",{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"19cd44ed7278957051fca663f821c916-export const World = \"hello\";","2753a1085d587a7d57069e1105af24ec-export const someString: string = \"HELLO WORLD\";\nexport function leftPad(s: string, n: number) { return s + n; }\nexport function multiply(a: number, b: number) { return a * b; }",{"version":"6ceab83400a6167be2fb5feab881ded0-declare const dts: any;","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"target":1},"semanticDiagnosticsPerFile":[1,2,3,4,5]} //// [/user/username/projects/sample1/core/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -327,13 +327,21 @@ function multiply(a, b) { return a * b; } "target": 1 }, "semanticDiagnosticsPerFile": [ - "lib.d.ts" + "lib.d.ts", + "lib.esnext.d.ts", + "./anotherModule.ts", + "./index.ts", + "./some_decl.d.ts" ], - "size": 1505 + "size": 1513 } core/tsconfig.json:: SemanticDiagnostics:: *not cached* /home/src/tslibs/TS/Lib/lib.d.ts +*not cached* /home/src/tslibs/TS/Lib/lib.esnext.d.ts +*not cached* /user/username/projects/sample1/core/anotherModule.ts +*not cached* /user/username/projects/sample1/core/index.ts +*not cached* /user/username/projects/sample1/core/some_decl.d.ts Signatures:: (used version) /home/src/tslibs/TS/Lib/lib.d.ts diff --git a/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js b/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js index 5cfd7df738c63..e327c345b4511 100644 --- a/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js +++ b/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js @@ -150,7 +150,7 @@ X; "size": 1095 } //// [/user/username/projects/transitiveReferences/tsconfig.b.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","./a.d.ts","./b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"0ccee316fe0e81d05228833d759a8fea-export declare class A {\n}\n",{"version":"22b83bc3eaf6d7b067d7a6659b0b318f-import {A} from '@ref/a';\nexport const b = new A();","signature":"92d534c2dbda627a55a8cdaeb4843b7a-import { A } from '@ref/a';\nexport declare const b: A;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./b.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","./a.d.ts","./b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"0ccee316fe0e81d05228833d759a8fea-export declare class A {\n}\n",{"version":"22b83bc3eaf6d7b067d7a6659b0b318f-import {A} from '@ref/a';\nexport const b = new A();","signature":"92d534c2dbda627a55a8cdaeb4843b7a-import { A } from '@ref/a';\nexport declare const b: A;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"paths":{"@ref/*":["./*"]},"pathsBasePath":"./"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./b.d.ts"} //// [/user/username/projects/transitiveReferences/tsconfig.b.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -204,7 +204,13 @@ X; ] ], "options": { - "composite": true + "composite": true, + "paths": { + "@ref/*": [ + "./*" + ] + }, + "pathsBasePath": "./" }, "referencedMap": { "./b.ts": [ @@ -212,7 +218,7 @@ X; ] }, "latestChangedDtsFile": "./b.d.ts", - "size": 1278 + "size": 1326 } //// [/user/username/projects/transitiveReferences/tsconfig.c.tsbuildinfo] *new* {"version":"FakeTSVersion","root":["./c.ts"]} diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/dependencyUpdate/watches-absolute-non-root-dependency-updates.js b/tsc/testdata/baselines/reference/tsbuildWatch/dependencyUpdate/watches-absolute-non-root-dependency-updates.js index 802b6accd0863..61bd0a303ac62 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/dependencyUpdate/watches-absolute-non-root-dependency-updates.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/dependencyUpdate/watches-absolute-non-root-dependency-updates.js @@ -64,7 +64,7 @@ import { myValue } from "abs-dep"; export const value = myValue; //// [C:/work/project/dist/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"4384f7716e1c7cc875e39624007cccc9-export declare const myValue: string;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"4384f7716e1c7cc875e39624007cccc9-export declare const myValue: string;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"strict":true,"pathsBasePath":".."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -120,7 +120,13 @@ export const value = myValue; "options": { "composite": true, "outDir": "./", - "strict": true + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -128,7 +134,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1347 + "size": 1414 } Watch Registrations:: @@ -170,7 +176,7 @@ Output:: //// [C:/work/project/dist/src/index.js] *rewrite with same content* //// [C:/work/project/dist/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"936f1acf4d15f440cdb2eb27f80fb9c9-export declare const myValue: number;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":48,"end":53,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["number","string"]}]]],"latestChangedDtsFile":"./src/index.d.ts"} +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es2026.full.d.ts","d:/work/deps/dep.d.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"936f1acf4d15f440cdb2eb27f80fb9c9-export declare const myValue: number;",{"version":"6c77917c7b17b3698cb1dbdb7227fbff-import { myValue } from \"abs-dep\";\nexport const value: string = myValue;","signature":"d704bb9feb766d5360f4081857e4c09e-export declare const value: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"strict":true,"pathsBasePath":".."},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":48,"end":53,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["number","string"]}]]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -226,7 +232,13 @@ Output:: "options": { "composite": true, "outDir": "./", - "strict": true + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -252,7 +264,7 @@ Output:: ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1518 + "size": 1585 } Watch Registrations:: @@ -263,6 +275,7 @@ Directory watches:: D:/work/deps tsconfig.json:: SemanticDiagnostics:: +*refresh* C:/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts *refresh* D:/work/deps/dep.d.ts *refresh* C:/work/project/src/index.ts Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config-with-libReplacement.js b/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config-with-libReplacement.js index a87c7223a51b0..f540f93e47063 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config-with-libReplacement.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config-with-libReplacement.js @@ -453,7 +453,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -593,10 +593,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2595 + "size": 2623 } //// [/home/src/workspace/projects/project2/index.d.ts] *new* export declare const y = 10; diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config.js b/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config.js index 6fb3641d4c9d7..184b0eed9b5e7 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/libraryResolution/with-config.js @@ -216,7 +216,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -350,10 +350,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2218 + "size": 2246 } //// [/home/src/workspace/projects/project2/index.d.ts] *new* export declare const y = 10; diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/moduleResolution/handles-the-cache-correctly-when-two-projects-use-different-module-resolution-settings.js b/tsc/testdata/baselines/reference/tsbuildWatch/moduleResolution/handles-the-cache-correctly-when-two-projects-use-different-module-resolution-settings.js index 53212bab4dc6c..e0d4b1e873996 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/moduleResolution/handles-the-cache-correctly-when-two-projects-use-different-module-resolution-settings.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/moduleResolution/handles-the-cache-correctly-when-two-projects-use-different-module-resolution-settings.js @@ -90,7 +90,7 @@ export {}; export {}; //// [/user/username/projects/myproject/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/bar/package.json","../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts","../node_modules/@types/bar/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"7ae42cb6eee47288e3acb472bb3aad16-import { foo } from \"file\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;","a0d503557e945e94b2464694c91a48ba-export const bar = 10;"],"fileIdsList":[[2]],"options":{"composite":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/bar/package.json","../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts","../node_modules/@types/bar/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"7ae42cb6eee47288e3acb472bb3aad16-import { foo } from \"file\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;","a0d503557e945e94b2464694c91a48ba-export const bar = 10;"],"fileIdsList":[[2]],"options":{"composite":true,"types":["foo","bar"]},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} //// [/user/username/projects/myproject/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -166,7 +166,11 @@ export {}; ] ], "options": { - "composite": true + "composite": true, + "types": [ + "foo", + "bar" + ] }, "referencedMap": { "./index.ts": [ @@ -174,7 +178,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1671 + "size": 1693 } //// [/user/username/projects/myproject/project2/index.d.ts] *new* export {}; @@ -184,7 +188,7 @@ export {}; Object.defineProperty(exports, "__esModule", { value: true }); //// [/user/username/projects/myproject/project2/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"7ae42cb6eee47288e3acb472bb3aad16-import { foo } from \"file\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;"],"fileIdsList":[[2]],"options":{"composite":true,"module":199},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"7ae42cb6eee47288e3acb472bb3aad16-import { foo } from \"file\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;"],"fileIdsList":[[2]],"options":{"composite":true,"module":199,"moduleResolution":99,"types":["foo"]},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} //// [/user/username/projects/myproject/project2/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -253,7 +257,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); ], "options": { "composite": true, - "module": 199 + "module": 199, + "moduleResolution": 99, + "types": [ + "foo" + ] }, "referencedMap": { "./index.ts": [ @@ -261,7 +269,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1544 + "size": 1582 } Watch Registrations:: @@ -322,7 +330,7 @@ const bar = 10; export {}; //// [/user/username/projects/myproject/project1/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/bar/package.json","../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts","../node_modules/@types/bar/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"1ab147b130b9a5309305c28d6be6beb4-import { foo } from \"file\";const bar = 10;","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;","a0d503557e945e94b2464694c91a48ba-export const bar = 10;"],"fileIdsList":[[2]],"options":{"composite":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[3],"missingPackageJsons":["../node_modules/@types/bar/package.json","../node_modules/@types/foo/package.json","../node_modules/@types/package.json","../node_modules/package.json","./node_modules/file/package.json","./node_modules/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/file/index.d.ts","./index.ts","../node_modules/@types/foo/index.d.ts","../node_modules/@types/bar/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;",{"version":"1ab147b130b9a5309305c28d6be6beb4-import { foo } from \"file\";const bar = 10;","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"bf6a9897955595825a99e7ef50878c55-export const foo = 10;","a0d503557e945e94b2464694c91a48ba-export const bar = 10;"],"fileIdsList":[[2]],"options":{"composite":true,"types":["foo","bar"]},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} //// [/user/username/projects/myproject/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -398,7 +406,11 @@ export {}; ] ], "options": { - "composite": true + "composite": true, + "types": [ + "foo", + "bar" + ] }, "referencedMap": { "./index.ts": [ @@ -406,7 +418,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1686 + "size": 1708 } Watch Registrations:: @@ -425,6 +437,10 @@ Directory watches:: /user/username/projects/myproject/project2/node_modules/file project1/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /user/username/projects/myproject/project1/node_modules/file/index.d.ts *refresh* /user/username/projects/myproject/project1/index.ts +*refresh* /user/username/projects/myproject/node_modules/@types/foo/index.d.ts +*refresh* /user/username/projects/myproject/node_modules/@types/bar/index.d.ts Signatures:: (computed .d.ts) /user/username/projects/myproject/project1/index.ts diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/programUpdates/works-with-extended-source-files.js b/tsc/testdata/baselines/reference/tsbuildWatch/programUpdates/works-with-extended-source-files.js index 31ca209c41258..0ae57c8a57d78 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/programUpdates/works-with-extended-source-files.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/programUpdates/works-with-extended-source-files.js @@ -364,6 +364,7 @@ Output:: [HH:MM:SS AM] Found 0 errors. Watching for file changes. +//// [/user/username/projects/project/other.js] *rewrite with same content* //// [/user/username/projects/project/project2.tsconfig.tsbuildinfo] *modified* {"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","./other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7148e8559d706b66aaba2a2423755c63-let z = 0;","signature":"879426698e1db06899fd57775c19b230-declare let z: number;\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"strict":false},"latestChangedDtsFile":"./other.d.ts"} //// [/user/username/projects/project/project2.tsconfig.tsbuildinfo.readable.baseline.txt] *modified* @@ -443,7 +444,7 @@ Output:: * project2.tsconfig.json * project3.tsconfig.json -[HH:MM:SS AM] Project 'project2.tsconfig.json' is out of date because output 'other.js' is older than input 'project2.tsconfig.json' +[HH:MM:SS AM] Project 'project2.tsconfig.json' is out of date because output 'project2.tsconfig.tsbuildinfo' is older than input 'project2.tsconfig.json' [HH:MM:SS AM] Building project 'project2.tsconfig.json'... diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js b/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js index 0c04134c66d8c..bcd584c8a3532 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project-and-shared-is-first.js @@ -130,7 +130,7 @@ console.log('Hello, world!'); export {}; //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -209,7 +209,13 @@ export {}; "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -231,7 +237,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -443,8 +449,9 @@ projects/server/src/server.ts Matched by include pattern 'src/**/*.ts' in 'projects/server/tsconfig.json' [HH:MM:SS AM] Found 0 errors. Watching for file changes. +//// [/home/src/workspaces/solution/projects/server/dist/server/src/server.js] *rewrite with same content* //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../../shared/dist/src/random.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[5,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -523,7 +530,13 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -545,7 +558,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -655,7 +668,11 @@ Signatures:: projects/server/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts *refresh* /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/myClass.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/random.d.ts +*refresh* /home/src/workspaces/solution/projects/server/src/server.ts Signatures:: (used version) /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts @@ -726,8 +743,9 @@ projects/server/src/server.ts Matched by include pattern 'src/**/*.ts' in 'projects/server/tsconfig.json' [HH:MM:SS AM] Found 0 errors. Watching for file changes. +//// [/home/src/workspaces/solution/projects/server/dist/server/src/server.js] *rewrite with same content* //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[4,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[3,6]]} +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/src/logging.ts","../../../shared/src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"fileIdsList":[[3]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[4,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[3,6]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -797,7 +815,13 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -815,7 +839,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1603 + "size": 1678 } //// [/home/src/workspaces/solution/projects/shared/dist/tsconfig.tsbuildinfo] *modified* {"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/logging.ts","../src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"107fb48a395fd47390346ab424ebcc12-export function log(str: string) {\n console.log(str);\n}export const x = 10;","signature":"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","impliedNodeFormat":1},{"version":"22f018e389f527d25fc2ad2b2c6c9702-export class MyClass { }","signature":"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"latestChangedDtsFile":"./src/logging.d.ts"} @@ -900,6 +924,10 @@ Signatures:: projects/server/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/myClass.d.ts +*refresh* /home/src/workspaces/solution/projects/server/src/server.ts Signatures:: diff --git a/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project.js b/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project.js index ad7f8a017f887..d7421dc3b426b 100644 --- a/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project.js +++ b/tsc/testdata/baselines/reference/tsbuildWatch/roots/when-root-file-is-from-referenced-project.js @@ -130,7 +130,7 @@ console.log('Hello, world!'); export {}; //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"380f2d6d625cf989bc9f9bcd67ce3afe-export declare function log(str: string): void;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -209,7 +209,13 @@ export {}; "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -231,7 +237,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -443,8 +449,9 @@ projects/shared/dist/src/random.d.ts File is output of project reference source 'projects/shared/src/random.ts' [HH:MM:SS AM] Found 0 errors. Watching for file changes. +//// [/home/src/workspaces/solution/projects/server/dist/server/src/server.js] *rewrite with same content* //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/dist/src/random.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts","../../../shared/src/random.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","1d6adcd8c4dee61b744fc1ff84370372-export declare function randomFn(str: string): void;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,6],[4,7],[5,8]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -523,7 +530,13 @@ projects/shared/dist/src/random.d.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -545,7 +558,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -655,7 +668,11 @@ Signatures:: projects/server/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/myClass.d.ts +*refresh* /home/src/workspaces/solution/projects/server/src/server.ts *refresh* /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/random.d.ts Signatures:: (used version) /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts @@ -726,8 +743,9 @@ projects/shared/dist/src/logging.d.ts File is output of project reference source 'projects/shared/src/logging.ts' [HH:MM:SS AM] Found 0 errors. Watching for file changes. +//// [/home/src/workspaces/solution/projects/server/dist/server/src/server.js] *rewrite with same content* //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","rootDir":"../../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[4,6]]} +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2026.full.d.ts","../../../shared/dist/src/myClass.d.ts","../../src/server.ts","../../../shared/dist/src/logging.d.ts","../../../shared/src/myClass.ts","../../../shared/src/logging.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n",{"version":"12354a7ec5afade35d10a2c1fa79eb29-import { MyClass } from ':shared/myClass.js';\nconsole.log('Hello, world!');","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1},"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n"],"fileIdsList":[[2]],"options":{"composite":true,"outDir":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"rootDir":"../../..","pathsBasePath":"../.."},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/server.d.ts","resolvedRoot":[[2,5],[4,6]]} //// [/home/src/workspaces/solution/projects/server/dist/server/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -797,7 +815,13 @@ projects/shared/dist/src/logging.d.ts "options": { "composite": true, "outDir": "..", - "rootDir": "../../.." + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -815,7 +839,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1603 + "size": 1678 } //// [/home/src/workspaces/solution/projects/shared/dist/tsconfig.tsbuildinfo] *modified* {"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../src/logging.ts","../src/myClass.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"107fb48a395fd47390346ab424ebcc12-export function log(str: string) {\n console.log(str);\n}export const x = 10;","signature":"5178e2a779ca8b29fb07201995347a09-export declare function log(str: string): void;\nexport declare const x = 10;\n","impliedNodeFormat":1},{"version":"22f018e389f527d25fc2ad2b2c6c9702-export class MyClass { }","signature":"21b0030a128ccc5aedc6fdbe3cdf12e3-export declare class MyClass {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"latestChangedDtsFile":"./src/logging.d.ts"} @@ -900,6 +924,10 @@ Signatures:: projects/server/tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/myClass.d.ts +*refresh* /home/src/workspaces/solution/projects/server/src/server.ts +*refresh* /home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js new file mode 100644 index 0000000000000..1099f8af0a8dd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js @@ -0,0 +1,364 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input } from './styles.css'; +export const result = input; + +//// [/home/src/workspaces/project/producer/styles.d.css.ts] *new* +export declare const input: { value: string }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowArbitraryExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../styles.d.css.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n"],"fileIdsList":[[3]],"options":{"allowArbitraryExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[2,1]],"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":36,"code":6263,"category":1,"messageKey":"Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263","messageArgs":["./styles.css","/home/src/workspaces/project/producer/styles.d.css.ts"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../styles.d.css.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../styles.d.css.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 36, + "code": 6263, + "category": 1, + "messageKey": "Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263", + "messageArgs": [ + "./styles.css", + "/home/src/workspaces/project/producer/styles.d.css.ts" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1734 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change allowArbitraryExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../styles.d.css.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n",{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"allowArbitraryExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../styles.d.css.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../styles.d.css.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js new file mode 100644 index 0000000000000..799d5d97618ff --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js @@ -0,0 +1,380 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input } from './styles.css'; +export const result = input; + +//// [/home/src/workspaces/project/producer/styles.d.css.ts] *new* +export declare const input: { value: string }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowArbitraryExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: string; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../styles.d.css.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n",{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"allowArbitraryExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../styles.d.css.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../styles.d.css.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "380463a97ab08897fc216074e4a9ef84-export declare const result: {\n value: string;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change allowArbitraryExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowArbitraryExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "styles.d.css.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../styles.d.css.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1},"c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n"],"fileIdsList":[[3]],"options":{"allowArbitraryExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[2,1]],"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":36,"code":6263,"category":1,"messageKey":"Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263","messageArgs":["./styles.css","/home/src/workspaces/project/producer/styles.d.css.ts"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../styles.d.css.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../styles.d.css.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fcb63f6bd996adc273725edd89b2e1d9-import { input } from './styles.css';\nexport const result = input;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../styles.d.css.ts", + "version": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "signature": "c95e011ba1b3a0844a0e5701255bbbdb-export declare const input: { value: string };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../styles.d.css.ts" + ] + ], + "options": { + "allowArbitraryExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 36, + "code": 6263, + "category": 1, + "messageKey": "Module_0_was_resolved_to_1_but_allowArbitraryExtensions_is_not_set_6263", + "messageArgs": [ + "./styles.css", + "/home/src/workspaces/project/producer/styles.d.css.ts" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1734 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/styles.d.css.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS6263: Module './styles.css' was resolved to '/home/src/workspaces/project/producer/styles.d.css.ts', but '--allowArbitraryExtensions' is not set. + +1 import { input } from './styles.css'; +   ~~~~~~~~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js new file mode 100644 index 0000000000000..9f53eb46f0b22 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1972 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change allowImportingTsExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1971 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js new file mode 100644 index 0000000000000..e1d44ef8b2255 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1971 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change allowImportingTsExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": false, + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "allowImportingTsExtensions": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1972 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-0.js new file mode 100644 index 0000000000000..a4b815a045cf2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-0.js @@ -0,0 +1,232 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","lib.es2015.symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "lib.es2015.symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "lib.es2015.symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-1.js new file mode 100644 index 0000000000000..e0aef41ffe814 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-1.js @@ -0,0 +1,232 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/tslibs/TS/Lib/lib.es5.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"fileNames":["lib.es5.d.ts","lib.es2015.symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "fileNames": [ + "lib.es5.d.ts", + "lib.es2015.symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es5.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "lib.es2015.symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1498 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/tslibs/TS/Lib/lib.es2015.symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js new file mode 100644 index 0000000000000..023a437247b5f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js @@ -0,0 +1,402 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":[],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2055 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js new file mode 100644 index 0000000000000..4e84c94ec673f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js @@ -0,0 +1,402 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":[],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2055 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..f427fe96fa94f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-0.js @@ -0,0 +1,400 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2033 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..740820aa57d76 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-1.js @@ -0,0 +1,400 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./special":{"custom":"./deep/nested/thing.d.ts","default":"./unused.d.ts"},"./fallback":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/node_modules/fixture/unused.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "customConditions": [ + "custom" + ], + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/special").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"customConditions":["custom"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "534194cc2aa0debfa99a8519854edafb-export declare const result: import(\"fixture/special\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "customConditions": [ + "custom" + ], + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2062 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change customConditions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/fallback").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8afb58ad201ffb7161f5fd6c55786e3f-export declare const result: import(\"fixture/fallback\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2033 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-0.js new file mode 100644 index 0000000000000..1e146beeaa395 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-0.js @@ -0,0 +1,329 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function decorate(value: any): any; +@decorate +export class Result { constructor(value: string | null) {} } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare class Result { + constructor(value: string | null); +} + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [String]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1502 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [Object]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1501 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-1.js new file mode 100644 index 0000000000000..5e92cc16b9ee1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-1.js @@ -0,0 +1,329 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function decorate(value: any): any; +@decorate +export class Result { constructor(value: string | null) {} } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare class Result { + constructor(value: string | null); +} + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [Object]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1501 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +let Result = class Result { + constructor(value) { } +}; +Result = __decorate([ + decorate, + __metadata("design:paramtypes", [String]) +], Result); +export { Result }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n","signature":"232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"emitDecoratorMetadata":true,"declaration":true,"experimentalDecorators":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "3e32612ff85046589e44bfe8bc229489-declare function decorate(value: any): any;\n@decorate\nexport class Result { constructor(value: string | null) {} }\n", + "signature": "232428766c344909aee1d7eb74981483-export declare class Result {\n constructor(value: string | null);\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "emitDecoratorMetadata": true, + "declaration": true, + "experimentalDecorators": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1502 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js new file mode 100644 index 0000000000000..2c8919c4f76f5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js @@ -0,0 +1,416 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input as a } from 'first'; +import { input as b } from 'second'; +export const result = [a, b]; + +//// [/home/src/workspaces/project/producer/node_modules/first/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts] *new* +export const input: 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/first/package.json] *new* +{"name":"first","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts] *new* +export const input: 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/package.json] *new* +{"name":"second","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": false, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: ("first" | "second")[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[6],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/node_modules/dependency/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","2be5566647752018a2f34c167fe6f053-export const input: 'second';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 6 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/node_modules/dependency/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/node_modules/dependency/index.d.ts", + "version": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "signature": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2130 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change deduplicatePackages without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[5],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 5 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1983 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js new file mode 100644 index 0000000000000..b8d4aa7d20567 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js @@ -0,0 +1,418 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { input as a } from 'first'; +import { input as b } from 'second'; +export const result = [a, b]; + +//// [/home/src/workspaces/project/producer/node_modules/first/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts] *new* +export const input: 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/first/package.json] *new* +{"name":"first","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/index.d.ts] *new* +export { input } from 'dependency'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts] *new* +export const input: 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/package.json] *new* +{"name":"dependency","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/node_modules/second/package.json] *new* +{"name":"second","version":"1.0.0","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[5],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 5 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1983 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change deduplicatePackages without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "deduplicatePackages": false, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: ("first" | "second")[]; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[6],"packageJsons":["../node_modules/first/node_modules/dependency/package.json","../node_modules/first/package.json","../node_modules/second/node_modules/dependency/package.json","../node_modules/second/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/first/node_modules/dependency/index.d.ts","../node_modules/first/index.d.ts","../node_modules/second/node_modules/dependency/index.d.ts","../node_modules/second/index.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"8314dc361a146d40f123a1696028ad63-export const input: 'first';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n","2be5566647752018a2f34c167fe6f053-export const input: 'second';\n","7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n",{"version":"c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n","signature":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,5],[2],[4]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"deduplicatePackages":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 6 + } + ], + "packageJsons": [ + "../node_modules/first/node_modules/dependency/package.json", + "../node_modules/first/package.json", + "../node_modules/second/node_modules/dependency/package.json", + "../node_modules/second/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/first/node_modules/dependency/index.d.ts", + "../node_modules/first/index.d.ts", + "../node_modules/second/node_modules/dependency/index.d.ts", + "../node_modules/second/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/first/node_modules/dependency/index.d.ts", + "version": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "signature": "8314dc361a146d40f123a1696028ad63-export const input: 'first';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/first/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/node_modules/dependency/index.d.ts", + "version": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "signature": "2be5566647752018a2f34c167fe6f053-export const input: 'second';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../node_modules/second/index.d.ts", + "version": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "signature": "7f7c915aaec78d3b8809e464f7ce1464-export { input } from 'dependency';\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../index.ts", + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c48cd4fc72f2e3723fd9cb54f2cbab0c-import { input as a } from 'first';\nimport { input as b } from 'second';\nexport const result = [a, b];\n", + "signature": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "deduplicatePackages": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../node_modules/first/index.d.ts", + "../node_modules/second/index.d.ts" + ], + "../node_modules/first/index.d.ts": [ + "../node_modules/first/node_modules/dependency/index.d.ts" + ], + "../node_modules/second/index.d.ts": [ + "../node_modules/second/node_modules/dependency/index.d.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2130 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/node_modules/dependency/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js new file mode 100644 index 0000000000000..3722088587eee --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js @@ -0,0 +1,346 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +interface Promise { then(callback: (value: T) => U): Promise; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export async function result() { return 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): Promise; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1385 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change importHelpers without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +import { __awaiter } from "tslib"; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":28,"code":2354,"category":1,"messageKey":"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354","messageArgs":["tslib"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 28, + "code": 2354, + "category": 1, + "messageKey": "This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354", + "messageArgs": [ + "tslib" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1579 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js new file mode 100644 index 0000000000000..20fb31e85dd96 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js @@ -0,0 +1,330 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +interface Promise { then(callback: (value: T) => U): Promise; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export async function result() { return 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): Promise; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +import { __awaiter } from "tslib"; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":28,"code":2354,"category":1,"messageKey":"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354","messageArgs":["tslib"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 28, + "code": 2354, + "category": 1, + "messageKey": "This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354", + "messageArgs": [ + "tslib" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1579 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2354: This syntax requires an imported helper but module 'tslib' cannot be found. + +1 export async function result() { return 1; } +   ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change importHelpers without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "importHelpers": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +export function result() { + return __awaiter(this, void 0, void 0, function* () { return 1; }); +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n","signature":"134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"importHelpers":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "signature": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "0576b6d9f0951f6e78d059343c639289-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a883828f47f18aa40b82337ef5cfdea1-export async function result() { return 1; }\n", + "signature": "134f4b886194b9d95f4b0c0a13bb06e6-export declare function result(): Promise;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "importHelpers": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1385 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-first-to-second-incremental.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-first-to-second-incremental.js new file mode 100644 index 0000000000000..2014fdfaa34c2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-first-to-second-incremental.js @@ -0,0 +1,485 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/configs/first/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/first/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/configs/second/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/second/thing.ts] *new* +export class Thing { private field = 2; } + +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from '../configs/first/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "extends": "../configs/first/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/configs/first/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *new* +import { Thing } from '../configs/first/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/first"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/first" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2025 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change extends without changing paths or source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "extends": "../configs/second/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../configs/first/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/second"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/second" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2043 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-second-to-first-incremental.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-second-to-first-incremental.js new file mode 100644 index 0000000000000..d1bb0c4d3609a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-second-to-first-incremental.js @@ -0,0 +1,485 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/configs/first/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/first/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/configs/second/base.json] *new* +{"compilerOptions":{"paths":{"short":["./thing.ts"]}}} +//// [/home/src/workspaces/project/configs/second/thing.ts] *new* +export class Thing { private field = 2; } + +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from '../configs/first/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "extends": "../configs/second/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/configs/first/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *new* +import { Thing } from '../configs/first/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../configs/first/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/second"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "c0bfd7d589d12d912d62249ca8e6c68a-export declare const result: import(\"../configs/first/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/second" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2043 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change extends without changing paths or source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "extends": "../configs/first/base.json", + "compilerOptions": { + "strict": true, "module": "esnext", "moduleResolution": "bundler", + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "rootDir": "..", "outDir": "dist" + }, + "files": ["index.ts"] + } + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2026.full.d.ts","../../../configs/first/thing.ts","../../factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n","signature":"e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["./thing.ts"]},"rootDir":"../../..","strict":true,"pathsBasePath":"../../../configs/first"},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../../../configs/first/thing.ts", + "../../factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../configs/first/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../factory.ts", + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8b7b5a693a77e15abcd9007840a17c07-import { Thing } from '../configs/first/thing';\nexport function make() { return new Thing(); }\n", + "signature": "e8598c58e2f7e802512f5c8d9e198fe8-import { Thing } from '../configs/first/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../configs/first/thing.ts" + ], + [ + "../../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "./thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "pathsBasePath": "../../../configs/first" + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2025 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/configs/first/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/configs/first/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/configs/first/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/configs/first/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from '../configs/first/thing'; +   ~~~~~~~~~~~~~~~~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/producer/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from './factory'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js new file mode 100644 index 0000000000000..7d7534c5fa3a1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js @@ -0,0 +1,425 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1 + 2; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedDeclarations without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1608 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"emitSignatures":[2]} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "emitSignatures": [ + { + "file": "../index.ts", + "original": 2 + } + ], + "size": 1471 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js new file mode 100644 index 0000000000000..acd2695428799 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js @@ -0,0 +1,322 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1 + 2; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"emitDiagnosticsPerFile":[[2,[{"pos":13,"end":19,"code":9010,"category":1,"messageKey":"Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010","relatedInformation":[{"pos":13,"end":19,"code":9027,"category":1,"messageKey":"Add_a_type_annotation_to_the_variable_0_9027","messageArgs":["result"]}]}]]],"emitSignatures":[2]} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "emitDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 13, + "end": 19, + "code": 9010, + "category": 1, + "messageKey": "Variable_must_have_an_explicit_type_annotation_with_isolatedDeclarations_9010", + "relatedInformation": [ + { + "pos": 13, + "end": 19, + "code": 9027, + "category": 1, + "messageKey": "Add_a_type_annotation_to_the_variable_0_9027", + "messageArgs": [ + "result" + ] + } + ] + } + ] + ] + ], + "emitSignatures": [ + { + "file": "../index.ts", + "original": 2 + } + ], + "size": 1471 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsSkipped +Output:: +producer/index.ts:1:14 - error TS9010: Variable must have an explicit type annotation with --isolatedDeclarations. + +1 export const result = 1 + 2; +   ~~~~~~ + + producer/index.ts:1:14 - Add a type annotation to the variable result. + 1 export const result = 1 + 2; +    ~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedDeclarations without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "isolatedDeclarations": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "isolatedDeclarations": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js new file mode 100644 index 0000000000000..4031f2e61becb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1387 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1386 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js new file mode 100644 index 0000000000000..8329852232b87 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js @@ -0,0 +1,290 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1386 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1387 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-0.js new file mode 100644 index 0000000000000..c91940528230f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-0.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1413 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1412 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-1.js new file mode 100644 index 0000000000000..158d03c121c62 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-1.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +const enum Value { Result = 1 } +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare const enum Value { + Result = 1 +} +export declare const result = Value.Result; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = Value.Result; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1412 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change isolatedModules without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "isolatedModules": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +var Value; +(function (Value) { + Value[Value["Result"] = 1] = "Result"; +})(Value || (Value = {})); +export const result = 1 /* Value.Result */; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n","signature":"41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"isolatedModules":false,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e395acaa99867f5ee43dd1f51beb1f60-const enum Value { Result = 1 }\nexport const result = Value.Result;\n", + "signature": "41c236b74c1b8b388644ea9278676760-declare const enum Value {\n Result = 1\n}\nexport declare const result = Value.Result;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "isolatedModules": false, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1413 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js new file mode 100644 index 0000000000000..6dcc227f685cf --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js @@ -0,0 +1,306 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } } +declare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } } +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "A.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { + a: string; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"A.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change jsxFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "B.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { + b: number; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: B.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"B.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "B.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js new file mode 100644 index 0000000000000..cdae568b2e511 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js @@ -0,0 +1,306 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } } +declare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } } +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "B.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { + b: number; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: B.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"B.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "3fe95b2d9b150f2d7a0ef4e0a5ebfd93-declare namespace B {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n b: number;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: B.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "B.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change jsxFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "jsxFactory": "A.create", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { + a: string; + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;","signature":"4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"jsxFactory":"A.create","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "23628e376238d49062aee78e65258589-declare namespace A { function create(...args: any[]): any; namespace JSX { interface Element { a: string; } interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { function create(...args: any[]): any; namespace JSX { interface Element { b: number; } interface IntrinsicElements { div: {}; } } }\nexport const result =
;", + "signature": "4508f79e06e6e1fd9854f7b21e7c2ad6-declare namespace A {\n function create(...args: any[]): any;\n namespace JSX {\n interface Element {\n a: string;\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1851 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js new file mode 100644 index 0000000000000..ca6b3bde190b5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js @@ -0,0 +1,304 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } } +declare namespace B { const Fragment: any; } +export const result = <>
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + const Fragment: any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"A.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change jsxFragmentFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"B.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js new file mode 100644 index 0000000000000..bcae8e4e3ac96 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js @@ -0,0 +1,304 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } } +declare namespace B { const Fragment: any; } +export const result = <>
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace A { + function create(...args: any[]): any; + const Fragment: any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: A.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"B.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "B.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change jsxFragmentFactory without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "jsx": "react", + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;","signature":"e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":false,"declaration":true,"jsx":2,"jsxFactory":"A.create","jsxFragmentFactory":"A.Fragment","module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "889be8e0051bcc533143d52d6f067b9c-declare namespace A { function create(...args: any[]): any; const Fragment: any; namespace JSX { interface Element {} interface IntrinsicElements { div: {}; } } }\ndeclare namespace B { const Fragment: any; }\nexport const result = <>
;", + "signature": "e7c244a7e3db537b93f3d558f130dc47-declare namespace A {\n function create(...args: any[]): any;\n const Fragment: any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: A.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "jsx": 2, + "jsxFactory": "A.create", + "jsxFragmentFactory": "A.Fragment", + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1793 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js new file mode 100644 index 0000000000000..ed8ef4dc2b865 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js @@ -0,0 +1,332 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/package.json] *new* +{"name":"@typescript/lib-es2015"} +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/package.json] *new* +{"name":"@typescript/lib-es5","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-es2015/symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es5/index.d.ts", + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1767 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es2015/symbol.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../index.ts"],"fileInfos":[{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../node_modules/@typescript/lib-es5/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1766 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js new file mode 100644 index 0000000000000..4808eee0edb99 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js @@ -0,0 +1,332 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/package.json] *new* +{"name":"@typescript/lib-es2015"} +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts] *new* +/// +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/package.json] *new* +{"name":"@typescript/lib-es5","types":"index.d.ts"} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2015.symbol", + "es5" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es2015/symbol.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../index.ts"],"fileInfos":[{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../node_modules/@typescript/lib-es5/index.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1766 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change lib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es5", + "es2015.symbol" + ], + "libReplacement": true, + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[3],"packageJsons":["../node_modules/@typescript/lib-es2015/package.json","../node_modules/@typescript/lib-es5/package.json"],"missingPackageJsons":["../node_modules/@typescript/lib-es2015/symbol/package.json"],"fileNames":["../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-es2015/symbol.d.ts","../index.ts"],"fileInfos":[{"version":"24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 3 + } + ], + "packageJsons": [ + "../node_modules/@typescript/lib-es2015/package.json", + "../node_modules/@typescript/lib-es5/package.json" + ], + "missingPackageJsons": [ + "../node_modules/@typescript/lib-es2015/symbol/package.json" + ], + "fileNames": [ + "../node_modules/@typescript/lib-es5/index.d.ts", + "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../node_modules/@typescript/lib-es5/index.d.ts", + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "signature": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "24a6a79ff734278d9380e94844780011-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@typescript/lib-es2015/symbol.d.ts", + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "signature": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "a6020120d14c7c5fefa5ac3b42037042-/// \ndeclare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1767 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es5/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@typescript/lib-es2015/symbol.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-0.js new file mode 100644 index 0000000000000..bbebb273996af --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-0.js @@ -0,0 +1,785 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/data.json] *new* +{"value":1} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error. + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-1.js new file mode 100644 index 0000000000000..0161908e2fcac --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-1.js @@ -0,0 +1,761 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/data.json] *new* +{"value":1} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +import value from './data.json' with { type: 'json' }; +export { value }; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1643 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +producer/index.ts:1:33 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'. + +1 import value from './data.json' with { type: 'json' }; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]},{"pos":32,"end":53,"code":2823,"category":1,"messageKey":"Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + }, + { + "pos": 32, + "end": 53, + "code": 2823, + "category": 1, + "messageKey": "Import_attributes_are_only_supported_when_the_module_option_is_set_to_esnext_node18_node20_nodenext__2823" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1629 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "data.json" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1478 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/data.json +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error. + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../data.json","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}"},"d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n"],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"noFile":true,"code":2318,"category":1,"messageKey":"Cannot_find_global_type_0_2318","messageArgs":["ImportAttributes"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../data.json", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../data.json", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../data.json", + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "signature": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}", + "impliedNodeFormat": "None", + "original": { + "version": "db5c8b37dc230a4072f9aee6a9de2054-{\"value\":1}" + } + }, + { + "fileName": "../index.ts", + "version": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "signature": "d14f0d3908f7da732136b65808f228f6-import value from './data.json' with { type: 'json' };\nexport { value };\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../data.json" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../data.json" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "noFile": true, + "code": 2318, + "category": 1, + "messageKey": "Cannot_find_global_type_0_2318", + "messageArgs": [ + "ImportAttributes" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1464 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-0.js new file mode 100644 index 0000000000000..036974ec90e5a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-0.js @@ -0,0 +1,314 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = await 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1254 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":1378,"category":1,"messageKey":"Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 1378, + "category": 1, + "messageKey": "Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1456 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-1.js new file mode 100644 index 0000000000000..5b877e0408bbd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-1.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = await 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "commonjs", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":1,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":1378,"category":1,"messageKey":"Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 1378, + "category": 1, + "messageKey": "Top_level_await_expressions_are_only_allowed_when_the_module_option_is_set_to_es2022_esnext_system_n_1378" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1456 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS1378: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher. + +1 export const result = await 1; +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change module without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5b8e806df896a09f7e649577f285d72a-export const result = await 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1254 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-0.js new file mode 100644 index 0000000000000..c2d1ee291d3b5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-0.js @@ -0,0 +1,287 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.js] *new* +exports.value = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare var value: 1; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +"use strict"; +exports.value = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +exports.value = 1; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-1.js new file mode 100644 index 0000000000000..762d0e416fd30 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-1.js @@ -0,0 +1,287 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.js] *new* +exports.value = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare var value: 1; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +exports.value = 1; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowJs": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.js" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +"use strict"; +exports.value = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.js"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n","signature":"7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n","impliedNodeFormat":1}],"options":{"allowJs":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.js" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.js" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.js", + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "20a3857f22d98156672630c4be07f6b8-exports.value = 1;\n", + "signature": "7ec131aff5fd730d6d542e77cde11d4c-export declare var value: 1;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "allowJs": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1274 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.js +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.js + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-0.js new file mode 100644 index 0000000000000..df7ac39e9e870 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-0.js @@ -0,0 +1,342 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare module 'input' { export const value: number; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare module 'input' { + const value: number; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1363 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare module 'input' { + const value: number; +} +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":15,"end":22,"code":2664,"category":1,"messageKey":"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 15, + "end": 22, + "code": 2664, + "category": 1, + "messageKey": "Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1518 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-1.js new file mode 100644 index 0000000000000..3206f53b281c6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-1.js @@ -0,0 +1,326 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare module 'input' { export const value: number; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare module 'input' { + const value: number; +} +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":15,"end":22,"code":2664,"category":1,"messageKey":"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 15, + "end": 22, + "code": 2664, + "category": 1, + "messageKey": "Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1518 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:16 - error TS2664: Invalid module name in augmentation, module 'input' cannot be found. + +1 declare module 'input' { export const value: number; } +   ~~~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare module 'input' { + const value: number; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1363 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-0.js new file mode 100644 index 0000000000000..0015fb0afd3ea --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-0.js @@ -0,0 +1,276 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +// A file with no statements. + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1239 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1251 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-1.js new file mode 100644 index 0000000000000..e95a80ef6b338 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-1.js @@ -0,0 +1,276 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +// A file with no statements. + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1251 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7cfdeb2c529f81399431834654c6a3be-// A file with no statements.\n", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1239 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-0.js new file mode 100644 index 0000000000000..7419b85fbd8a7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-0.js @@ -0,0 +1,269 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"99aa06d3014798d86001c324468d497f-"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1126 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"99aa06d3014798d86001c324468d497f-","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1220 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-1.js new file mode 100644 index 0000000000000..9586e94e76420 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-1.js @@ -0,0 +1,269 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"99aa06d3014798d86001c324468d497f-","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":3,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "abe7d9981d6018efb6b2b794f40a1607-export {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 3, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1220 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleDetection without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"99aa06d3014798d86001c324468d497f-"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "99aa06d3014798d86001c324468d497f-", + "signature": "99aa06d3014798d86001c324468d497f-", + "impliedNodeFormat": "CommonJS" + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1126 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js new file mode 100644 index 0000000000000..5089d17048bb6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js @@ -0,0 +1,508 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1987 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js new file mode 100644 index 0000000000000..0ab6433a46dd1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js @@ -0,0 +1,508 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1987 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..abd33b305fa44 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-0.js @@ -0,0 +1,506 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1965 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..a2c64b2babe6a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-1.js @@ -0,0 +1,506 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#/thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "node16", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":3,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 3, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1996 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleResolution without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dcc916beb08a485af9c83c1f11994676-export declare const result: import(\"#/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1965 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + File is CommonJS module because '/home/src/workspaces/project/package.json' does not have field "type" + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js new file mode 100644 index 0000000000000..2ee0c11ea5f8e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js @@ -0,0 +1,574 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Value } from './input'; +export function make() { return new Value(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/input.native.ts] *new* +export class Value { private field = 2; } + +//// [/home/src/workspaces/project/producer/input.ts] *new* +export class Value { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/input.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/input.native.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Value } from './input'; +export declare function make(): Value; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./input").Value; + +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.native.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleSuffixes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./input.native").Value; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.native.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js new file mode 100644 index 0000000000000..2bfd672ffc4f1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js @@ -0,0 +1,574 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Value } from './input'; +export function make() { return new Value(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/input.native.ts] *new* +export class Value { private field = 2; } + +//// [/home/src/workspaces/project/producer/input.ts] *new* +export class Value { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/input.native.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/input.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Value } from './input'; +export declare function make(): Value; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./input.native").Value; + +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *new* +export declare class Value { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.native.ts","../factory.ts","../index.ts","../input.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n","impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":[".native",""],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.native.ts", + "../factory.ts", + "../index.ts", + "../input.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.native.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.native.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change moduleSuffixes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "input.native.ts", + "input.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./input").Value; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2154 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/input.native.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,5]],"fileNames":["lib.es2020.d.ts","../input.ts","../factory.ts","../index.ts","../input.native.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1},{"version":"5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n","signature":"db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n","impliedNodeFormat":1},{"version":"97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n","signature":"00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleSuffixes":["",".native"],"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "original": [ + 2, + 5 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../input.ts", + "../factory.ts", + "../index.ts", + "../input.native.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.ts", + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "474fe61e4fddacef3d4948299344c4be-export class Value { private field = 1; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../factory.ts", + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5091fd799d8a0c70b7255ea4f619ddb2-import { Value } from './input';\nexport function make() { return new Value(); }\n", + "signature": "db83e15779ba9970d00c5e8e0f07e4cb-import { Value } from './input';\nexport declare function make(): Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../input.native.ts", + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "97a4c588c85b904c8a87bae13c026449-export class Value { private field = 2; }\n", + "signature": "00655aa7021cd4d256a5a52569a66254-export declare class Value {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../input.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2161 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/input.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/input.native.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/input.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/input.native.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js new file mode 100644 index 0000000000000..cd520842cf593 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js @@ -0,0 +1,277 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { let value; value = 1; return value; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1316 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noImplicitAny without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1318 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js new file mode 100644 index 0000000000000..9ae7dd1fe3aea --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js @@ -0,0 +1,277 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { let value; value = 1; return value; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1318 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noImplicitAny without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitAny": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1316 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js new file mode 100644 index 0000000000000..14cbd64e3cb71 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js @@ -0,0 +1,283 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = { value: 1, get() { return this.value; } }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: number; + get(): any; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1351 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noImplicitThis without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: number; + get(): number; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1353 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js new file mode 100644 index 0000000000000..7f16dd42dc3aa --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js @@ -0,0 +1,283 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = { value: 1, get() { return this.value; } }; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: { + value: number; + get(): number; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1353 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noImplicitThis without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noImplicitThis": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: { + value: number; + get(): any; +}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n","signature":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1215da67efb03a083a864934fcca2d8d-export const result = { value: 1, get() { return this.value; } };\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1351 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-0.js new file mode 100644 index 0000000000000..b1678cbac125b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-0.js @@ -0,0 +1,350 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.full.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'library'; + +//// [/home/src/workspaces/project/producer/globals.d.ts] *new* +interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {} + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "library"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.full.d.ts","../globals.d.ts","../index.ts"],"fileInfos":[{"version":"9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.full.d.ts", + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.full.d.ts", + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "signature": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1685 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noLib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[1,2]],"fileNames":["../globals.d.ts","../index.ts"],"fileInfos":[{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 1, + 2 + ] + } + ], + "fileNames": [ + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 2304, + "category": 1, + "messageKey": "Cannot_find_name_0_2304", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 989 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/globals.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-1.js new file mode 100644 index 0000000000000..1966916046618 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-1.js @@ -0,0 +1,336 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.full.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +declare function input(): 'library'; + +//// [/home/src/workspaces/project/producer/globals.d.ts] *new* +interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {} + +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[1,2]],"fileNames":["../globals.d.ts","../index.ts"],"fileInfos":[{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":27,"code":2304,"category":1,"messageKey":"Cannot_find_name_0_2304","messageArgs":["input"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 1, + 2 + ] + } + ], + "fileNames": [ + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 27, + "code": 2304, + "category": 1, + "messageKey": "Cannot_find_name_0_2304", + "messageArgs": [ + "input" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 989 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2304: Cannot find name 'input'. + +1 export const result = input(); +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noLib without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": null, + "module": "esnext", + "moduleResolution": "bundler", + "noLib": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "globals.d.ts", + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "library"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.full.d.ts","../globals.d.ts","../index.ts"],"fileInfos":[{"version":"9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../globals.d.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.full.d.ts", + "../globals.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.full.d.ts", + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "signature": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "9be52770c6d82c560a70ddfc6119d200-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };\ndeclare function input(): 'library';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../globals.d.ts", + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "signature": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d0b9f66a4eca7c55f7137502df548b04-interface Boolean {} interface Function {} interface CallableFunction {} interface NewableFunction {} interface IArguments {} interface Number {} interface Object {} interface RegExp {} interface String {} interface Array {} interface ReadonlyArray {}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5ab8cf72e75f2a82741fc2367d26da64-export declare const result: \"library\";\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1685 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +(used version) /home/src/workspaces/project/producer/globals.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.full.d.ts +*refresh* /home/src/workspaces/project/producer/globals.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js new file mode 100644 index 0000000000000..a3e0b4bd89b37 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js @@ -0,0 +1,278 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: { [key: string]: number }; +export const result = input.value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1344 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noUncheckedIndexedAccess without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: number | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1355 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js new file mode 100644 index 0000000000000..6aff8131dd956 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js @@ -0,0 +1,278 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: { [key: string]: number }; +export const result = input.value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: number | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1355 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change noUncheckedIndexedAccess without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "noUncheckedIndexedAccess": false, + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n","signature":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "813c53ad17b8e8761f7bc4f24e7b6346-declare const input: { [key: string]: number };\nexport const result = input.value;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1344 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js new file mode 100644 index 0000000000000..64f4866e28931 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js @@ -0,0 +1,510 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2011 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js new file mode 100644 index 0000000000000..9fb1ac50f3cb5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js @@ -0,0 +1,510 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("short").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"short":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "0e35362bb91c0babf0255c92a3f9a217-export declare const result: import(\"short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2011 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..7395d30ec3b65 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-0.js @@ -0,0 +1,499 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1956 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..2c8a78361ac66 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-1.js @@ -0,0 +1,499 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("renamed").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","paths":{"renamed":["../external/thing.ts"]},"rootDir":"../../..","strict":true,"target":7,"pathsBasePath":"../.."},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "dc47be6432a95c739ebc4a61d1942dd9-export declare const result: import(\"renamed\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, + "rootDir": "../../..", + "strict": true, + "target": 7, + "pathsBasePath": "../.." + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2015 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change paths without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1956 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-0.js new file mode 100644 index 0000000000000..188cef5a8a9c5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-0.js @@ -0,0 +1,382 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +namespace Value { export const enum Field { One } } + +//// [/home/src/workspaces/project/producer/other.ts] *new* +class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/other.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace Value { + const enum Field { + One = 0 + } +} + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1596 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":10,"end":15,"code":2433,"category":1,"messageKey":"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433"}]]],"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 10, + "end": 15, + "code": 2433, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433" + } + ] + ] + ], + "latestChangedDtsFile": "./other.d.ts", + "size": 1798 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-1.js new file mode 100644 index 0000000000000..4fb9adef81f3e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-1.js @@ -0,0 +1,366 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +namespace Value { export const enum Field { One } } + +//// [/home/src/workspaces/project/producer/other.ts] *new* +class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/other.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace Value { + const enum Field { + One = 0 + } +} + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":10,"end":15,"code":2433,"category":1,"messageKey":"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433"}]]],"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 10, + "end": 15, + "code": 2433, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433" + } + ] + ] + ], + "latestChangedDtsFile": "./other.d.ts", + "size": 1798 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:11 - error TS2433: A namespace declaration cannot be in a different file from a class or function with which it is merged. + +1 namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleDetection": "legacy", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../index.ts","../other.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n","signature":"6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e0ad4879312c3de57b2fb2b729378854-class Value {}\n","signature":"9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"moduleDetection":2,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./other.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts", + "../other.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../other.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "bc313e9f7e06046b36e33c63099c19fb-namespace Value { export const enum Field { One } }\n", + "signature": "6220140372d87df4d13eaeb310e98329-declare namespace Value {\n const enum Field {\n One = 0\n }\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e0ad4879312c3de57b2fb2b729378854-class Value {}\n", + "signature": "9f36ed7c4e3f51d34eece5b03afd9245-declare class Value {\n}\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "moduleDetection": 2, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1596 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/other.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-0.js new file mode 100644 index 0000000000000..b92a2e8620af6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-0.js @@ -0,0 +1,325 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export namespace Value { export const enum Field { One } } +export class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare namespace Value { + const enum Field { + One = 0 + } +} +export declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1416 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":17,"end":22,"code":2434,"category":1,"messageKey":"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 17, + "end": 22, + "code": 2434, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1612 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-1.js new file mode 100644 index 0000000000000..5e95b360200c6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-1.js @@ -0,0 +1,309 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export namespace Value { export const enum Field { One } } +export class Value {} + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare namespace Value { + const enum Field { + One = 0 + } +} +export declare class Value { +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":17,"end":22,"code":2434,"category":1,"messageKey":"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 17, + "end": 22, + "code": 2434, + "category": 1, + "messageKey": "A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1612 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:18 - error TS2434: A namespace declaration cannot be located prior to a class or function with which it is merged. + +1 export namespace Value { export const enum Field { One } } +   ~~~~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change preserveConstEnums without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "preserveConstEnums": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n","signature":"3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","preserveConstEnums":false,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "e92f50796b2afcbb2daf1c7cc0bb42f2-export namespace Value { export const enum Field { One } }\nexport class Value {}\n", + "signature": "3af7f772d71c5314382e56a8d2eb654f-export declare namespace Value {\n const enum Field {\n One = 0\n }\n}\nexport declare class Value {\n}\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "preserveConstEnums": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1416 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js new file mode 100644 index 0000000000000..b43b431f36d3e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js @@ -0,0 +1,374 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } +} +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "React", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: React.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"React","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "React", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1697 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change reactNamespace without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "Other", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"Other","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":182,"end":189,"code":7026,"category":1,"messageKey":"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026","messageArgs":["IntrinsicElements"]},{"pos":183,"end":186,"code":2874,"category":1,"messageKey":"This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874","messageArgs":["Other"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "Other", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.tsx", + [ + { + "pos": 182, + "end": 189, + "code": 7026, + "category": 1, + "messageKey": "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", + "messageArgs": [ + "IntrinsicElements" + ] + }, + { + "pos": 183, + "end": 186, + "code": 2874, + "category": 1, + "messageKey": "This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874", + "messageArgs": [ + "Other" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1817 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js new file mode 100644 index 0000000000000..1461446d8e03b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js @@ -0,0 +1,348 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.tsx] *new* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } +} +export const result =
; +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "Other", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"Other","rootDir":"..","strict":true,"target":7},"semanticDiagnosticsPerFile":[[2,[{"pos":182,"end":189,"code":7026,"category":1,"messageKey":"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026","messageArgs":["IntrinsicElements"]},{"pos":183,"end":186,"code":2874,"category":1,"messageKey":"This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874","messageArgs":["Other"]}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "Other", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.tsx", + [ + { + "pos": 182, + "end": 189, + "code": 7026, + "category": 1, + "messageKey": "JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026", + "messageArgs": [ + "IntrinsicElements" + ] + }, + { + "pos": 183, + "end": 186, + "code": 2874, + "category": 1, + "messageKey": "This_JSX_tag_requires_0_to_be_in_scope_but_it_could_not_be_found_2874", + "messageArgs": [ + "Other" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1817 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.tsx:5:23 - error TS7026: JSX element implicitly has type 'any' because no interface 'JSX.IntrinsicElements' exists. + +5 export const result =
; +   ~~~~~~~ + +producer/index.tsx:5:24 - error TS2874: This JSX tag requires 'Other' to be in scope, but it could not be found. + +5 export const result =
; +   ~~~ + + +Found 2 errors in the same file, starting at: producer/index.tsx:5 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change reactNamespace without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "jsx": "react", + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "reactNamespace": "React", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.tsx" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +declare namespace React { + function createElement(...args: any[]): any; + namespace JSX { + interface Element { + } + interface IntrinsicElements { + div: {}; + } + } +} +export declare const result: React.JSX.Element; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.tsx"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;","signature":"3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"jsx":2,"module":99,"moduleResolution":100,"outDir":"./","reactNamespace":"React","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.tsx" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.tsx" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.tsx", + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de50583c1e9540dc37098c752276a365-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX { interface Element {} interface IntrinsicElements { div: {} } }\n}\nexport const result =
;", + "signature": "3cdabc52f221e33d6ad352fb07711b0b-declare namespace React {\n function createElement(...args: any[]): any;\n namespace JSX {\n interface Element {\n }\n interface IntrinsicElements {\n div: {};\n }\n }\n}\nexport declare const result: React.JSX.Element;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "jsx": 2, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "reactNamespace": "React", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1697 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.tsx +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js new file mode 100644 index 0000000000000..27c636649e663 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js @@ -0,0 +1,395 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js new file mode 100644 index 0000000000000..8e1e7cfa816df --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js @@ -0,0 +1,395 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..65129ad3903b5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-0.js @@ -0,0 +1,393 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2030 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..ad710a9cbd938 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-1.js @@ -0,0 +1,393 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts] *new* +export class Thing { private field; } + +//// [/home/src/workspaces/project/producer/node_modules/fixture/package.json] *new* +{"name":"fixture","version":"1.0.0","exports":{"./short":"./deep/nested/thing.d.ts"}} +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonExports": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './node_modules/fixture/deep/nested/thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("fixture/deep/nested/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","resolvePackageJsonExports":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "4d7c19addc59507abc15460c85403172-export declare const result: import(\"fixture/deep/nested/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "resolvePackageJsonExports": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2076 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonExports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "factory.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("fixture/short").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[3,4]],"packageJsons":["../node_modules/fixture/package.json"],"missingPackageJsons":["../node_modules/fixture/deep/nested/package.json","../node_modules/fixture/deep/package.json"],"fileNames":["lib.es2020.d.ts","../node_modules/fixture/deep/nested/thing.d.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n",{"version":"1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n","signature":"3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n","signature":"a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../factory.ts", + "../index.ts" + ], + "original": [ + 3, + 4 + ] + } + ], + "packageJsons": [ + "../node_modules/fixture/package.json" + ], + "missingPackageJsons": [ + "../node_modules/fixture/deep/nested/package.json", + "../node_modules/fixture/deep/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../node_modules/fixture/deep/nested/thing.d.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/fixture/deep/nested/thing.d.ts", + "version": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "signature": "14b959b7c1426379d9c9483c8924f786-export class Thing { private field; }\n", + "impliedNodeFormat": "CommonJS" + }, + { + "fileName": "../factory.ts", + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1c3544c2137ceb05c0e3a709e39b0251-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport function make() { return new Thing(); }\n", + "signature": "3b91953d8c4580034dbf6faaa4bf358f-import { Thing } from './node_modules/fixture/deep/nested/thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", + "signature": "a76c5ac59fea9a118a741ac2712eeb42-export declare const result: import(\"fixture/short\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../node_modules/fixture/deep/nested/thing.d.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2030 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/fixture/deep/nested/thing.d.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js new file mode 100644 index 0000000000000..e0362bd202684 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js @@ -0,0 +1,500 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": true, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":true,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": true, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2019 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js new file mode 100644 index 0000000000000..64d8a6a66c9d7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js @@ -0,0 +1,500 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": true, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":true,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": true, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2019 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..b592a1709c917 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-0.js @@ -0,0 +1,498 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1986 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..7ac4554413346 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-1.js @@ -0,0 +1,498 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/external/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/external/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/package.json] *new* +{"imports":{"#thing":"./external/thing.ts"}} +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from '../external/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "resolvePackageJsonImports": false, + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/external/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/external/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *new* +export declare const result: import("../external/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","resolvePackageJsonImports":false,"rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "2f2ebb2b7d07a5a45f54b657eb07ecd7-export declare const result: import(\"../external/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "resolvePackageJsonImports": false, + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2031 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change resolvePackageJsonImports without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": "..", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/producer/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *modified* +export declare const result: import("#thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[4],"packageJsons":["../../../package.json"],"fileNames":["lib.es2020.d.ts","../../../external/thing.ts","../../../external/factory.ts","../../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n","signature":"916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../../index.ts" + ], + "original": 4 + } + ], + "packageJsons": [ + "../../../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../../../external/thing.ts", + "../../../external/factory.ts", + "../../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../../external/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../../index.ts", + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "c380ebe92cb8d9563d50748aaca5c414-import { make } from '../external/factory';\nexport const result = make();\n", + "signature": "916da8ba8b05d3305662d5797135a0a7-export declare const result: import(\"#thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../../../external/thing.ts" + ], + [ + "../../../external/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1986 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/external/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/external/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/external/thing.ts +*refresh* /home/src/workspaces/project/external/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/external/thing.ts +(stored at emit) /home/src/workspaces/project/external/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +external/factory.ts:1:23 - error TS6307: File '/home/src/workspaces/project/external/thing.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { Thing } from './thing'; +   ~~~~~~~~~ + +producer/index.ts:1:22 - error TS6307: File '/home/src/workspaces/project/external/factory.ts' is not listed within the file list of project '/home/src/workspaces/project/producer/tsconfig.json'. Projects must list all files or use an 'include' pattern. + +1 import { make } from '../external/factory'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js new file mode 100644 index 0000000000000..c1b9186d635ff --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js @@ -0,0 +1,372 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/other.ts] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/other.js +TSFILE: /home/src/workspaces/project/producer/dist/other.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/other.js] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1510 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/other.js +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export { result } from './other.js'; + +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1458 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js new file mode 100644 index 0000000000000..d41a3f495c0ed --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js @@ -0,0 +1,391 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/other.ts] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/other.js +TSFILE: /home/src/workspaces/project/producer/dist/other.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/index.js] *new* +export { result } from './other.js'; + +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *new* +export declare const result = 1; + +//// [/home/src/workspaces/project/producer/dist/other.js] *new* +export const result = 1; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1458 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/other.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "allowImportingTsExtensions": true, + "composite": true, + "declaration": true, + "emitDeclarationOnly": false, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts", + "other.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + +TSFILE: /home/src/workspaces/project/producer/dist/other.js +TSFILE: /home/src/workspaces/project/producer/dist/index.js +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/workspaces/project/producer/dist/index.js] *modified* +export { result } from './other.ts'; + +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","errors":true,"root":[[2,3]],"fileNames":["lib.es2020.d.ts","../other.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n","signature":"993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n","impliedNodeFormat":1},"1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n"],"fileIdsList":[[2]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":false,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "errors": true, + "root": [ + { + "files": [ + "../other.ts", + "../index.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../other.ts", + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "b33cb3c0fc12538ee0608497e30c503f-export const result = 1;\n", + "signature": "993e425aeb82a5fb982b8b91a1f7366e-export declare const result = 1;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "signature": "1df26769cf0ee6ac1620f40ac896ea8a-export { result } from './other.ts';\n", + "impliedNodeFormat": "CommonJS" + } + ], + "fileIdsList": [ + [ + "../other.ts" + ] + ], + "options": { + "allowImportingTsExtensions": true, + "composite": true, + "emitDeclarationOnly": false, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + "lib.es2020.d.ts", + "../other.ts", + "../index.ts" + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1510 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/other.js] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/other.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/tsconfig.json:3:39 - error TS5096: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set. + +3 "allowImportingTsExtensions": true, +   ~~~~ + + +Found 1 error in producer/tsconfig.json:3 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +*not cached* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*not cached* /home/src/workspaces/project/producer/other.ts +*not cached* /home/src/workspaces/project/producer/index.ts +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-0.js new file mode 100644 index 0000000000000..95861922032d7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-0.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1977 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1976 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-1.js new file mode 100644 index 0000000000000..b13c82554733d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-1.js @@ -0,0 +1,410 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/factory.ts] *new* +import { Thing } from './thing.js'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/index.ts] *new* +import { make } from './factory.js'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/package.json] *new* +{"type":"module"} +//// [/home/src/workspaces/project/producer/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": true, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *new* +import { Thing } from './thing.js'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1976 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rewriteRelativeImportExtensions without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "nodenext", + "moduleResolution": "nodenext", + "outDir": "dist", + "rewriteRelativeImportExtensions": false, + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "factory.ts", + "index.ts", + "thing.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"packageJsons":["../package.json"],"fileNames":["lib.es2020.d.ts","../thing.ts","../factory.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":99},{"version":"dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n","signature":"1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n","impliedNodeFormat":99},{"version":"0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n","signature":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"moduleResolution":99,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "packageJsons": [ + "../package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../thing.ts", + "../factory.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../factory.ts", + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "dd2e8d4c1148f51c7efb307face642f8-import { Thing } from './thing.js';\nexport function make() { return new Thing(); }\n", + "signature": "1b49f9db00ddcf69ab95a92a747ca3d2-import { Thing } from './thing.js';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 99 + } + }, + { + "fileName": "../index.ts", + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": "ESNext", + "original": { + "version": "0856d4e5ab9a4eea8790557855fd2eb4-import { make } from './factory.js';\nexport const result = make();\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "impliedNodeFormat": 99 + } + } + ], + "fileIdsList": [ + [ + "../thing.ts" + ], + [ + "../factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "moduleResolution": 99, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1977 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/thing.ts +*refresh* /home/src/workspaces/project/producer/factory.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/thing.ts +(stored at emit) /home/src/workspaces/project/producer/factory.ts +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js new file mode 100644 index 0000000000000..28b0c28ce4f9c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js @@ -0,0 +1,408 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/generated/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/generated/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":[],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1951 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js new file mode 100644 index 0000000000000..6284a8116c37c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js @@ -0,0 +1,408 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/generated/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/generated/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":[],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1951 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-0.js new file mode 100644 index 0000000000000..b16b31ceee3ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-0.js @@ -0,0 +1,406 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/generated/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/generated/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1937 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-1.js new file mode 100644 index 0000000000000..fe057f0048a98 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-1.js @@ -0,0 +1,406 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/generated/factory.ts] *new* +import { Thing } from './thing'; +export function make() { return new Thing(); } + +//// [/home/src/workspaces/project/producer/generated/thing.ts] *new* +export class Thing { private field = 1; } + +//// [/home/src/workspaces/project/producer/src/index.ts] *new* +import { make } from '../generated/factory'; +export const result = make(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "rootDirs": [ + "./src", + "./generated" + ], + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/generated/thing.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/generated/factory.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *new* +import { Thing } from './thing'; +export declare function make(): Thing; + +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *new* +export declare class Thing { + private field; +} + +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *new* +export declare const result: import("./thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","rootDirs":["../src","../generated"],"strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "b9864d32407f7f094d6860218dc805f5-export declare const result: import(\"./thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1963 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change rootDirs without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "generated/factory.ts", + "generated/thing.ts", + "src/index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/src/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *modified* +export declare const result: import("../generated/thing").Thing; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,4]],"fileNames":["lib.es2020.d.ts","../generated/thing.ts","../generated/factory.ts","../src/index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n","signature":"fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n","impliedNodeFormat":1},{"version":"ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n","signature":"8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n","impliedNodeFormat":1},{"version":"2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n","signature":"f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n","impliedNodeFormat":1}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "original": [ + 2, + 4 + ] + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../generated/thing.ts", + "../generated/factory.ts", + "../src/index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/thing.ts", + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "1e13636538b7ccc39e192111e556e4fd-export class Thing { private field = 1; }\n", + "signature": "fd3b9b2da1026c3ff32025ff8ed07329-export declare class Thing {\n private field;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../generated/factory.ts", + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ca900e2385cd189084934dd47c6733af-import { Thing } from './thing';\nexport function make() { return new Thing(); }\n", + "signature": "8541230877a83bcc0999fabcf92106a2-import { Thing } from './thing';\nexport declare function make(): Thing;\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../src/index.ts", + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "2e3d71cdddb13c604565f74d13e4d8aa-import { make } from '../generated/factory';\nexport const result = make();\n", + "signature": "f6655abf00ee64b0f2ddd0df13f3dab8-export declare const result: import(\"../generated/thing\").Thing;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../generated/thing.ts" + ], + [ + "../generated/factory.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../generated/factory.ts": [ + "../generated/thing.ts" + ], + "../src/index.ts": [ + "../generated/factory.ts" + ] + }, + "latestChangedDtsFile": "./src/index.d.ts", + "size": 1937 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/generated/factory.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/generated/thing.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/src/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/generated/thing.ts +*refresh* /home/src/workspaces/project/producer/generated/factory.ts +*refresh* /home/src/workspaces/project/producer/src/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/generated/thing.ts +(stored at emit) /home/src/workspaces/project/producer/generated/factory.ts +(stored at emit) /home/src/workspaces/project/producer/src/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/source-edit-after-changing-stripInternal-incremental.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/source-edit-after-changing-stripInternal-incremental.js new file mode 100644 index 0000000000000..810f0193d8e40 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/source-edit-after-changing-stripInternal-incremental.js @@ -0,0 +1,473 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/a.ts] *new* +export class Result { + /** @internal */ + value = ""; +} + +//// [/home/src/workspaces/project/b.ts] *new* +import { Result } from './a'; +export const forwarded = new Result().value; + +//// [/home/src/workspaces/project/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "strict": true, "stripInternal": true, + "outDir": "dist" + }, + "files": ["a.ts", "b.ts"] + } + +tsgo --project . --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/dist/a.d.ts +TSFILE: /home/src/workspaces/project/dist/b.d.ts +TSFILE: /home/src/workspaces/project/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/dist/a.d.ts] *new* +export declare class Result { +} + +//// [/home/src/workspaces/project/dist/b.d.ts] *new* +export declare const forwarded: string; + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n","signature":"7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":true},"referencedMap":[[3,1]],"latestChangedDtsFile":"./b.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": true + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./b.d.ts", + "size": 1540 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts +(stored at emit) /home/src/workspaces/project/b.ts + + +Edit [0]:: disable stripInternal without changing source files +//// [/home/src/workspaces/project/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, "declaration": true, "emitDeclarationOnly": true, + "strict": true, "stripInternal": false, + "outDir": "dist" + }, + "files": ["a.ts", "b.ts"] + } + +tsgo --project . --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/dist/a.d.ts +TSFILE: /home/src/workspaces/project/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/dist/a.d.ts] *modified* +export declare class Result { + /** @internal */ + value: string; +} + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n","signature":"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./a.d.ts", + "size": 1583 +} + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts + + +Edit [1]:: no change + +tsgo --project . --listEmittedFiles +ExitStatus:: Success +Output:: + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [2]:: restore the original declaration shape with a source edit +//// [/home/src/workspaces/project/a.ts] *modified* +export class Result { +} + + +tsgo --project . --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + +TSFILE: /home/src/workspaces/project/dist/a.d.ts +TSFILE: /home/src/workspaces/project/dist/b.d.ts +TSFILE: /home/src/workspaces/project/dist/tsconfig.tsbuildinfo + +Found 1 error in b.ts:2 + +//// [/home/src/workspaces/project/dist/a.d.ts] *modified* +export declare class Result { +} + +//// [/home/src/workspaces/project/dist/b.d.ts] *modified* +export declare const forwarded: any; + +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","../a.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n","signature":"7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n","impliedNodeFormat":1},{"version":"35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n","signature":"caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"outDir":"./","strict":true,"stripInternal":false},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":73,"code":2339,"category":1,"messageKey":"Property_0_does_not_exist_on_type_1_2339","messageArgs":["value","Result"]}]]],"latestChangedDtsFile":"./b.d.ts"} +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../a.ts", + "../b.ts" + ], + "original": [ + 2, + 3 + ] + } + ], + "fileNames": [ + "lib.es2026.full.d.ts", + "../a.ts", + "../b.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2026.full.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../a.ts", + "version": "5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5c3a12ee16d0d3c078ce1908a8a47a69-export class Result {\n}\n", + "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../b.ts", + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "fileIdsList": [ + [ + "../a.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "outDir": "./", + "strict": true, + "stripInternal": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "semanticDiagnosticsPerFile": [ + [ + "../b.ts", + [ + { + "pos": 68, + "end": 73, + "code": 2339, + "category": 1, + "messageKey": "Property_0_does_not_exist_on_type_1_2339", + "messageArgs": [ + "value", + "Result" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./b.d.ts", + "size": 1668 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/a.ts +(computed .d.ts) /home/src/workspaces/project/b.ts + + +Edit [3]:: no change + +tsgo --project . --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [4]:: force rebuild + +tsgo --build --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * tsconfig.json + +[HH:MM:SS AM] Project 'tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + +//// [/home/src/workspaces/project/dist/a.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/dist/b.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/a.ts +*refresh* /home/src/workspaces/project/b.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts +(stored at emit) /home/src/workspaces/project/b.ts + + +Edit [5]:: no change + +tsgo --project . --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +b.ts:2:39 - error TS2339: Property 'value' does not exist on type 'Result'. + +2 export const forwarded = new Result().value; +   ~~~~~ + + +Found 1 error in b.ts:2 + + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-0.js new file mode 100644 index 0000000000000..901c17204b506 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-0.js @@ -0,0 +1,272 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1296 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-1.js new file mode 100644 index 0000000000000..b0faea9cc1f3b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-1.js @@ -0,0 +1,272 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1296 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js new file mode 100644 index 0000000000000..a7fbf4c825a46 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js @@ -0,0 +1,274 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1310 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js new file mode 100644 index 0000000000000..c69a4d4303c80 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js @@ -0,0 +1,274 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1310 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-0.js new file mode 100644 index 0000000000000..301d0721935f1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-0.js @@ -0,0 +1,273 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1335 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1334 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-1.js new file mode 100644 index 0000000000000..13692a385debe --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-1.js @@ -0,0 +1,273 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1334 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strict without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": false, + "strictNullChecks": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1335 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js new file mode 100644 index 0000000000000..aa9c9123e7d38 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js @@ -0,0 +1,281 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; } +interface CallableFunction { + bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R; +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function input(value: string): number; +export const result = input.bind(null, 'hello'); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1566 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictBindCallApply without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: () => number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1574 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js new file mode 100644 index 0000000000000..e67345218e4dc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js @@ -0,0 +1,281 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; } +interface CallableFunction { + bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R; +} +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare function input(value: string): number; +export const result = input.bind(null, 'hello'); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: () => number; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1574 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictBindCallApply without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBindCallApply": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "signature": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "232a999ac84a6297b58685837cdd4eda-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };interface Function { bind(thisArg: any, ...args: any[]): any; }\ninterface CallableFunction {\n bind(this: (this: T, arg: A0, ...args: A) => R, thisArg: T, arg: A0): (...args: A) => R;\n}", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "32bb4831b1d4efff69ff4cfce3a163e8-declare function input(value: string): number;\nexport const result = input.bind(null, 'hello');\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1566 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js new file mode 100644 index 0000000000000..9d2b402473cab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js @@ -0,0 +1,281 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic; +interface Set { + values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } }; +} +declare const Set: { new(): Set }; +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = new Set().values().next().value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1529 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictBuiltinIteratorReturn without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1543 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js new file mode 100644 index 0000000000000..31ffc8c590cab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js @@ -0,0 +1,281 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *new* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic; +interface Set { + values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } }; +} +declare const Set: { new(): Set }; +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = new Set().values().next().value; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1543 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictBuiltinIteratorReturn without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n","signature":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "signature": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "fbc656977d10ce0d133c6b3428dd0ec6-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };type BuiltinIteratorReturn = intrinsic;\ninterface Set {\n values(): { next(): { value: T; done?: false } | { value: BuiltinIteratorReturn; done: true } };\n}\ndeclare const Set: { new(): Set };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1529 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js new file mode 100644 index 0000000000000..8269a651722ea --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js @@ -0,0 +1,292 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +interface Animal { name: string; } +interface Dog extends Animal { bark(): void; } +declare function infer(a: (value: T) => void, b: (value: T) => void): T; +declare const animal: (value: Animal) => void; +declare const dog: (value: Dog) => void; +export const result = infer(animal, dog); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +interface Animal { + name: string; +} +export declare const result: Animal; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1600 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictFunctionTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +interface Animal { + name: string; +} +interface Dog extends Animal { + bark(): void; +} +export declare const result: Dog; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1650 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js new file mode 100644 index 0000000000000..f4ccac8bde2f7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js @@ -0,0 +1,292 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +interface Animal { name: string; } +interface Dog extends Animal { bark(): void; } +declare function infer(a: (value: T) => void, b: (value: T) => void): T; +declare const animal: (value: Animal) => void; +declare const dog: (value: Dog) => void; +export const result = infer(animal, dog); +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +interface Animal { + name: string; +} +interface Dog extends Animal { + bark(): void; +} +export declare const result: Dog; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1650 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictFunctionTypes without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictFunctionTypes": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +interface Animal { + name: string; +} +export declare const result: Animal; +export {}; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);","signature":"cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "13facb7318a788cda4c43947066a625c-interface Animal { name: string; }\ninterface Dog extends Animal { bark(): void; }\ndeclare function infer(a: (value: T) => void, b: (value: T) => void): T;\ndeclare const animal: (value: Animal) => void;\ndeclare const dog: (value: Dog) => void;\nexport const result = infer(animal, dog);", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1600 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js new file mode 100644 index 0000000000000..68ffebf3bd0c3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js @@ -0,0 +1,282 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1360 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1371 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js new file mode 100644 index 0000000000000..2c57d22a6fe2a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js @@ -0,0 +1,282 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +declare const input: string | undefined; +export const result = input; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: string | undefined; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1371 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change strictNullChecks without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: string; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n","signature":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1360 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js new file mode 100644 index 0000000000000..3c237455e84e1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js @@ -0,0 +1,298 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1n; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1n; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":24,"code":2737,"category":1,"messageKey":"BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 24, + "code": 2737, + "category": 1, + "messageKey": "BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1419 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change target without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js new file mode 100644 index 0000000000000..3b5421f1b4042 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js @@ -0,0 +1,314 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = 1n; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result = 1n; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change target without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2015" + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n","signature":"608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":2},"semanticDiagnosticsPerFile":[[2,[{"pos":22,"end":24,"code":2737,"category":1,"messageKey":"BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737"}]]],"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "d9dbd437f2c323ecf251d980f1dfa5ee-export const result = 1n;\n", + "signature": "608bc115064824bf56c869258b8c619d-export declare const result = 1n;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 2 + }, + "semanticDiagnosticsPerFile": [ + [ + "../index.ts", + [ + { + "pos": 22, + "end": 24, + "code": 2737, + "category": 1, + "messageKey": "BigInt_literals_are_not_available_when_targeting_lower_than_ES2020_2737" + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1419 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. + +1 export const result = 1n; +   ~~ + + +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js new file mode 100644 index 0000000000000..59ec1dddc5a65 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js @@ -0,0 +1,368 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-a", + "./types-b" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} +//// [/home/src/workspaces/project/producer/types-a/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/types-b/second/index.d.ts] *new* +declare function input(): 'second'; + + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-a/first/index.d.ts","../types-b/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-a","../types-b"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-a/first/index.d.ts", + "../types-b/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1642 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change typeRoots without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-b", + "./types-a" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-b/second/index.d.ts","../types-a/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-b","../types-a"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-b/second/index.d.ts", + "../types-a/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1641 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/types-b/second/index.d.ts +(used version) /home/src/workspaces/project/producer/types-a/first/index.d.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js new file mode 100644 index 0000000000000..596ec07f03720 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js @@ -0,0 +1,368 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-b", + "./types-a" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} +//// [/home/src/workspaces/project/producer/types-a/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/types-b/second/index.d.ts] *new* +declare function input(): 'second'; + + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-b/second/index.d.ts","../types-a/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-b","../types-a"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-b/second/index.d.ts", + "../types-a/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1641 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change typeRoots without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "typeRoots": [ + "./types-a", + "./types-b" + ], + "types": [ + "*" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts","../types-a/first/index.d.ts","../types-b/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"typeRoots":["../types-a","../types-b"],"types":["*"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../types-a/first/index.d.ts", + "../types-b/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-a/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../types-b/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1642 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/types-a/first/index.d.ts +(used version) /home/src/workspaces/project/producer/types-b/second/index.d.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/types-a/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/types-b/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js new file mode 100644 index 0000000000000..b873eedc1106b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js @@ -0,0 +1,368 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts] *new* +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "first", + "second" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/first/index.d.ts","../node_modules/@types/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["first","second"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/first/index.d.ts", + "../node_modules/@types/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "first", + "second" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1821 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change types without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "second", + "first" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/second/index.d.ts","../node_modules/@types/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["second","first"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/second/index.d.ts", + "../node_modules/@types/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "second", + "first" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1820 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js new file mode 100644 index 0000000000000..15b366ba6fc62 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js @@ -0,0 +1,368 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export const result = input(); + +//// [/home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts] *new* +declare function input(): 'first'; + +//// [/home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts] *new* +declare function input(): 'second'; + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "second", + "first" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare const result: "first"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/second/index.d.ts","../node_modules/@types/first/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n","impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["second","first"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/second/index.d.ts", + "../node_modules/@types/first/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "5a64247cbccb0d8fcd870d0ee9b7c167-export declare const result: \"first\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "second", + "first" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1820 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change types without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "types": [ + "first", + "second" + ] + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare const result: "second"; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"missingPackageJsons":["../node_modules/@types/first/package.json","../node_modules/@types/package.json","../node_modules/@types/second/package.json","../node_modules/package.json"],"fileNames":["lib.es2020.d.ts","../index.ts","../node_modules/@types/first/index.d.ts","../node_modules/@types/second/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"26b427adfeca24f5b62a735e11365618-export const result = input();\n","signature":"d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n","impliedNodeFormat":1},{"version":"de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n","affectsGlobalScope":true,"impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"types":["first","second"]},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "missingPackageJsons": [ + "../node_modules/@types/first/package.json", + "../node_modules/@types/package.json", + "../node_modules/@types/second/package.json", + "../node_modules/package.json" + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts", + "../node_modules/@types/first/index.d.ts", + "../node_modules/@types/second/index.d.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "26b427adfeca24f5b62a735e11365618-export const result = input();\n", + "signature": "d8331a24b0c5de40a3ff21c9ad3ee6ed-export declare const result: \"second\";\n", + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/first/index.d.ts", + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "signature": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "de71218713951cfb72b34e51c1c9c2bd-declare function input(): 'first';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../node_modules/@types/second/index.d.ts", + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "signature": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "7310e40b4471d53101cf3f1181033c10-declare function input(): 'second';\n", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "types": [ + "first", + "second" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1821 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts +(computed .d.ts) /home/src/workspaces/project/producer/index.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +(used version) /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/first/index.d.ts +*refresh* /home/src/workspaces/project/producer/node_modules/@types/second/index.d.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js new file mode 100644 index 0000000000000..f535671384e60 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js @@ -0,0 +1,277 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { try { throw 1; } catch (error) { return error; } } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": false + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1342 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change useUnknownInCatchVariables without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": true + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): unknown; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1345 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js new file mode 100644 index 0000000000000..b7f5479c1b548 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js @@ -0,0 +1,277 @@ +currentDirectory::/home/src/workspaces/project +useCaseSensitiveFileNames::true +Input:: +//// [/home/src/workspaces/project/producer/index.ts] *new* +export function result() { try { throw 1; } catch (error) { return error; } } + +//// [/home/src/workspaces/project/producer/tsconfig.json] *new* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": true + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/tslibs/TS/Lib/lib.es2020.d.ts] *Lib* +/// +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 {} +interface SymbolConstructor { + (desc?: string | number): symbol; + for(name: string): symbol; + readonly toStringTag: symbol; +} +declare var Symbol: SymbolConstructor; +interface Symbol { + readonly [Symbol.toStringTag]: string; +} +declare const console: { log(msg: any): void; }; +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *new* +export declare function result(): unknown; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *new* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1345 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [0]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [1]:: change useUnknownInCatchVariables without changing source files +//// [/home/src/workspaces/project/producer/tsconfig.json] *modified* +{ + "compilerOptions": { + "composite": true, + "declaration": true, + "emitDeclarationOnly": true, + "lib": [ + "es2020" + ], + "module": "esnext", + "moduleResolution": "bundler", + "outDir": "dist", + "rootDir": ".", + "strict": true, + "target": "es2020", + "useUnknownInCatchVariables": false + }, + "files": [ + "index.ts" + ] +} + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: +TSFILE: /home/src/workspaces/project/producer/dist/index.d.ts +TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *modified* +export declare function result(): any; + +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *modified* +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2020.d.ts","../index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n","signature":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* +{ + "version": "FakeTSVersion", + "root": [ + { + "files": [ + "../index.ts" + ], + "original": 2 + } + ], + "fileNames": [ + "lib.es2020.d.ts", + "../index.ts" + ], + "fileInfos": [ + { + "fileName": "lib.es2020.d.ts", + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": 1 + } + }, + { + "fileName": "../index.ts", + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": "CommonJS", + "original": { + "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "impliedNodeFormat": 1 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1342 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Edit [3]:: force rebuild with the same compiler options + +tsgo --build producer --verbose --force +ExitStatus:: Success +Output:: +[HH:MM:SS AM] Projects in this build: + * producer/tsconfig.json + +[HH:MM:SS AM] Project 'producer/tsconfig.json' is being forcibly rebuilt + +[HH:MM:SS AM] Building project 'producer/tsconfig.json'... + +//// [/home/src/workspaces/project/producer/dist/index.d.ts] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *rewrite with same content* +//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *rewrite with same content* + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.ts + + +Edit [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/composite/converting-to-modules.js b/tsc/testdata/baselines/reference/tsc/composite/converting-to-modules.js index 34450c548f2fe..a3ff3a07214b5 100644 --- a/tsc/testdata/baselines/reference/tsc/composite/converting-to-modules.js +++ b/tsc/testdata/baselines/reference/tsc/composite/converting-to-modules.js @@ -179,4 +179,6 @@ Output:: tsconfig.json:: SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2026.full.d.ts +*refresh* /home/src/workspaces/project/src/main.ts Signatures:: diff --git a/tsc/testdata/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js b/tsc/testdata/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js index d423cafe94952..bdfd5fc16d631 100644 --- a/tsc/testdata/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js +++ b/tsc/testdata/baselines/reference/tsc/declarationEmit/reports-dts-generation-errors-with-incremental.js @@ -82,7 +82,7 @@ import ky from 'ky'; export const api = ky.extend({}); //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[3],"packageJsons":["./node_modules/ky/package.json","./package.json"],"missingPackageJsons":["./node_modules/ky/distribution/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/ky/distribution/index.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b9b50c37c18e43d94b0dd4fb43967f10-type KyInstance = {\n extend(options: Record): KyInstance;\n}\ndeclare const ky: KyInstance;\nexport default ky;","impliedNodeFormat":99},{"version":"0f5091e963c17913313e4969c59e6eb4-import ky from 'ky';\nexport const api = ky.extend({});","impliedNodeFormat":99}],"fileIdsList":[[2]],"options":{"composite":true,"declaration":true,"module":199,"skipLibCheck":true,"skipDefaultLibCheck":true},"referencedMap":[[3,1]],"emitDiagnosticsPerFile":[[3,[{"pos":34,"end":37,"code":4023,"category":1,"messageKey":"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023","messageArgs":["api","KyInstance","\"/home/src/workspaces/project/node_modules/ky/distribution/index\""]}]]],"emitSignatures":[3]} +{"version":"FakeTSVersion","root":[3],"packageJsons":["./node_modules/ky/package.json","./package.json"],"missingPackageJsons":["./node_modules/ky/distribution/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/ky/distribution/index.d.ts","./index.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"b9b50c37c18e43d94b0dd4fb43967f10-type KyInstance = {\n extend(options: Record): KyInstance;\n}\ndeclare const ky: KyInstance;\nexport default ky;","impliedNodeFormat":99},{"version":"0f5091e963c17913313e4969c59e6eb4-import ky from 'ky';\nexport const api = ky.extend({});","impliedNodeFormat":99}],"fileIdsList":[[2]],"options":{"composite":true,"declaration":true,"module":199,"moduleResolution":99,"skipLibCheck":true,"skipDefaultLibCheck":true},"referencedMap":[[3,1]],"emitDiagnosticsPerFile":[[3,[{"pos":34,"end":37,"code":4023,"category":1,"messageKey":"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023","messageArgs":["api","KyInstance","\"/home/src/workspaces/project/node_modules/ky/distribution/index\""]}]]],"emitSignatures":[3]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -149,6 +149,7 @@ export const api = ky.extend({}); "composite": true, "declaration": true, "module": 199, + "moduleResolution": 99, "skipLibCheck": true, "skipDefaultLibCheck": true }, @@ -182,7 +183,7 @@ export const api = ky.extend({}); "original": 3 } ], - "size": 1843 + "size": 1865 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsc/incremental/recursive-tagged-tuple-after-incremental-edits.js b/tsc/testdata/baselines/reference/tsc/incremental/recursive-tagged-tuple-after-incremental-edits.js index 4b5a5ad527188..5b148b9b481a8 100644 --- a/tsc/testdata/baselines/reference/tsc/incremental/recursive-tagged-tuple-after-incremental-edits.js +++ b/tsc/testdata/baselines/reference/tsc/incremental/recursive-tagged-tuple-after-incremental-edits.js @@ -43,7 +43,7 @@ tsgo ExitStatus:: Success Output:: //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5fa9a45d6461d373d994072ba4b41eca-type Doc =\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;","e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;"],"fileIdsList":[[2]],"options":{"module":99,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"5fa9a45d6461d373d994072ba4b41eca-type Doc =\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;","e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;"],"fileIdsList":[[2]],"options":{"module":99,"moduleResolution":100,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -97,6 +97,7 @@ Output:: ], "options": { "module": 99, + "moduleResolution": 100, "strict": true }, "referencedMap": { @@ -116,7 +117,7 @@ Output:: 2 ] ], - "size": 1464 + "size": 1487 } tsconfig.json:: @@ -155,7 +156,7 @@ tsgo ExitStatus:: Success Output:: //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"209790a380ab2edc475c402e3a85e110-type Doc =\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"17befdf8983ce76b78c64e0ef9b49c73-type Doc = string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;","signature":"a56617d7ff45ff02880e982e94937f59-export declare const value: any;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"209790a380ab2edc475c402e3a85e110-type Doc =\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"17befdf8983ce76b78c64e0ef9b49c73-type Doc = string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;","signature":"a56617d7ff45ff02880e982e94937f59-export declare const value: any;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"moduleResolution":100,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -219,6 +220,7 @@ Output:: ], "options": { "module": 99, + "moduleResolution": 100, "strict": true }, "referencedMap": { @@ -238,7 +240,7 @@ Output:: 2 ] ], - "size": 2108 + "size": 2131 } tsconfig.json:: @@ -279,7 +281,7 @@ tsgo ExitStatus:: Success Output:: //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"e0d759702454fa5818ea5747e4408ca8-type Doc = number | string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;","signature":"a56617d7ff45ff02880e982e94937f59-export declare const value: any;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"e0d759702454fa5818ea5747e4408ca8-type Doc = number | string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"e3e1863b40b48bf670281f2578788e0b-import { doc } from \"./doc\";\nexport const value = doc;","signature":"a56617d7ff45ff02880e982e94937f59-export declare const value: any;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"moduleResolution":100,"strict":true},"referencedMap":[[3,1]],"affectedFilesPendingEmit":[3,2]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -343,6 +345,7 @@ Output:: ], "options": { "module": 99, + "moduleResolution": 100, "strict": true }, "referencedMap": { @@ -362,7 +365,7 @@ Output:: 2 ] ], - "size": 2131 + "size": 2154 } tsconfig.json:: @@ -405,7 +408,7 @@ Output:: Found 1 error in consumer.ts:3 //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"e0d759702454fa5818ea5747e4408ca8-type Doc = number | string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"8af491d326de0701fb4d07a415b35dec-import { doc } from \"./doc\";\nexport const value = doc;\nexport const invalid: number = value;\n","signature":"b0465247e2bd6863c6a086f723d673e8-export declare const value: any;\nexport declare const invalid: number;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["Doc","number"],"messageChain":[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["string","number"]}]}]]],"affectedFilesPendingEmit":[3,2]} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","signature":"e0d759702454fa5818ea5747e4408ca8-type Doc = number | string | {\n [k: string]: Doc;\n} | readonly [\"array\", Doc] | readonly [\"array\", Doc, {\n length: number;\n}] | readonly [\"array\", Doc, {\n min?: number;\n max?: number;\n}] | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\nexport {};\n","impliedNodeFormat":1},{"version":"8af491d326de0701fb4d07a415b35dec-import { doc } from \"./doc\";\nexport const value = doc;\nexport const invalid: number = value;\n","signature":"b0465247e2bd6863c6a086f723d673e8-export declare const value: any;\nexport declare const invalid: number;\n\n(42,5): error5088: The_inferred_type_of_0_references_a_type_with_a_cyclic_structure_which_cannot_be_trivially_serialize_5088\nvalue\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"module":99,"moduleResolution":100,"strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["Doc","number"],"messageChain":[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["string","number"]}]}]]],"affectedFilesPendingEmit":[3,2]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -469,6 +472,7 @@ Found 1 error in consumer.ts:3 ], "options": { "module": 99, + "moduleResolution": 100, "strict": true }, "referencedMap": { @@ -519,7 +523,7 @@ Found 1 error in consumer.ts:3 2 ] ], - "size": 2530 + "size": 2553 } tsconfig.json:: @@ -565,7 +569,7 @@ Output:: Found 1 error in consumer.ts:3 //// [/home/src/workspaces/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","8af491d326de0701fb4d07a415b35dec-import { doc } from \"./doc\";\nexport const value = doc;\nexport const invalid: number = value;\n"],"fileIdsList":[[2]],"options":{"module":99,"strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["Doc","number"],"messageChain":[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["string","number"]}]}]]],"affectedFilesPendingEmit":[3,2]} +{"version":"FakeTSVersion","root":[[2,3]],"fileNames":["lib.es2026.full.d.ts","./doc.ts","./consumer.ts"],"fileInfos":[{"version":"0e330bc1e98a7e2601e4b38548df5e2b-/// \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 { readonly length: number; readonly [n: number]: T; }\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"703658314ddb6e78faa0ecabe01e9319-type Doc =\n | number\n | string\n | { [k: string]: Doc }\n | readonly [\"array\", Doc]\n | readonly [\"array\", Doc, { length: number }]\n | readonly [\"array\", Doc, { min?: number; max?: number }]\n | readonly [\"union\", Doc, ...Doc[]];\nexport declare const doc: Doc;\n// comment-only edit\n","8af491d326de0701fb4d07a415b35dec-import { doc } from \"./doc\";\nexport const value = doc;\nexport const invalid: number = value;\n"],"fileIdsList":[[2]],"options":{"module":99,"moduleResolution":100,"strict":true},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[[3,[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["Doc","number"],"messageChain":[{"pos":68,"end":75,"code":2322,"category":1,"messageKey":"Type_0_is_not_assignable_to_type_1_2322","messageArgs":["string","number"]}]}]]],"affectedFilesPendingEmit":[3,2]} //// [/home/src/workspaces/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -619,6 +623,7 @@ Found 1 error in consumer.ts:3 ], "options": { "module": 99, + "moduleResolution": 100, "strict": true }, "referencedMap": { @@ -669,7 +674,7 @@ Found 1 error in consumer.ts:3 2 ] ], - "size": 1862 + "size": 1885 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config-with-libReplacement.js b/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config-with-libReplacement.js index ab01382856a9e..f663ade3e2c4d 100644 --- a/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config-with-libReplacement.js +++ b/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config-with-libReplacement.js @@ -254,7 +254,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"missingPackageJsons":["../node_modules/@typescript/lib-dom/package.json","../node_modules/@typescript/lib-es5/package.json","../node_modules/@typescript/lib-scripthost/package.json","../node_modules/@typescript/lib-webworker/package.json"],"fileNames":["../node_modules/@typescript/lib-webworker/index.d.ts","../node_modules/@typescript/lib-scripthost/index.d.ts","../node_modules/@typescript/lib-es5/index.d.ts","../node_modules/@typescript/lib-dom/index.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -394,10 +394,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2595 + "size": 2623 } project1/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config.js b/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config.js index fc47f01bef078..0ae5e2232df5c 100644 --- a/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config.js +++ b/tsc/testdata/baselines/reference/tsc/libraryResolution/with-config.js @@ -141,7 +141,7 @@ export declare const x = "type1"; export const x = "type1"; //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true},"latestChangedDtsFile":"./index.d.ts"} +{"version":"FakeTSVersion","root":[[5,10]],"fileNames":["lib.es5.d.ts","lib.dom.d.ts","lib.webworker.d.ts","lib.scripthost.d.ts","./core.d.ts","./file.ts","./file2.ts","./index.ts","./utils.d.ts","./typeroot1/sometype/index.d.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"d9b7428535134fcb21dad91303dc6311-interface DOMInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"95c5e18b7871b756fb3bb843e03aa05d-interface WebWorkerInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"2fa71959819338965a3c6b2122d95c96-interface ScriptHostInterface { }","affectsGlobalScope":true,"impliedNodeFormat":1},"a1f9b824326bab2c3c8f13eccf69f182-export const core = 10;",{"version":"69c4ea0c9ff13ab7fc078607d9363624-export const file = 10;","signature":"a224c1b0cbd2f5fe611e588db48243cb-export declare const file = 10;\n","impliedNodeFormat":1},{"version":"76f8c505d1aaf1122ce1da0807c21477-/// \n/// \n/// ","signature":"99aa06d3014798d86001c324468d497f-","impliedNodeFormat":1},{"version":"aeb695aed936d7539a32fc3cd25af558-export const x = \"type1\";","signature":"e2f8d12de2edba256e37cf4a656ac52d-export declare const x = \"type1\";\n","impliedNodeFormat":1},"4e905e76b648aae5f92e8bd5418e19b3-export const y = 10;","6bf5e0a71dae6fccf68b93fbbb73f178-export type TheNum = \"type1\";"],"options":{"composite":true,"typeRoots":["./typeroot1"]},"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspace/projects/project1/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -275,10 +275,13 @@ export const x = "type1"; } ], "options": { - "composite": true + "composite": true, + "typeRoots": [ + "./typeroot1" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2218 + "size": 2246 } project1/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsc/moduleResolution/alternateResult.js b/tsc/testdata/baselines/reference/tsc/moduleResolution/alternateResult.js index 74f694e4d76de..1563f35da6b0d 100644 --- a/tsc/testdata/baselines/reference/tsc/moduleResolution/alternateResult.js +++ b/tsc/testdata/baselines/reference/tsc/moduleResolution/alternateResult.js @@ -319,7 +319,7 @@ Found 2 errors in the same file, starting at: index.mts:1 export {}; //// [/home/src/projects/project/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[4],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","impliedNodeFormat":99}],"fileIdsList":[[2,3]],"options":{"module":100,"strict":true},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"pos":20,"end":25,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo","/home/src/projects/project/node_modules/foo/index.mjs"],"messageChain":[{"pos":20,"end":25,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo/index.d.ts","foo"],"repopulateInfo":{"kind":2,"moduleReference":"foo","mode":99}}]},{"pos":47,"end":52,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar","/home/src/projects/project/node_modules/bar/index.mjs"],"messageChain":[{"pos":47,"end":52,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar/index.d.ts","@types/bar"],"repopulateInfo":{"kind":2,"moduleReference":"bar","mode":99}}]}]]]} +{"version":"FakeTSVersion","root":[4],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","impliedNodeFormat":99}],"fileIdsList":[[2,3]],"options":{"module":100,"moduleResolution":3,"strict":true,"types":[]},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"pos":20,"end":25,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo","/home/src/projects/project/node_modules/foo/index.mjs"],"messageChain":[{"pos":20,"end":25,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo/index.d.ts","foo"],"repopulateInfo":{"kind":2,"moduleReference":"foo","mode":99}}]},{"pos":47,"end":52,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar","/home/src/projects/project/node_modules/bar/index.mjs"],"messageChain":[{"pos":47,"end":52,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar/index.d.ts","@types/bar"],"repopulateInfo":{"kind":2,"moduleReference":"bar","mode":99}}]}]]]} //// [/home/src/projects/project/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -392,7 +392,9 @@ export {}; ], "options": { "module": 100, - "strict": true + "moduleResolution": 3, + "strict": true, + "types": [] }, "referencedMap": { "./index.mts": [ @@ -465,7 +467,7 @@ export {}; ] ] ], - "size": 2804 + "size": 2836 } //// [/home/src/tslibs/TS/Lib/lib.es2026.full.d.ts] *Lib* /// @@ -1509,7 +1511,7 @@ Found 1 error in index.mts:1 //// [/home/src/projects/project/index.mjs] *rewrite with same content* //// [/home/src/projects/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[5],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4]],"options":{"module":100,"strict":true},"referencedMap":[[5,1]],"semanticDiagnosticsPerFile":[[5,[{"pos":20,"end":25,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo","/home/src/projects/project/node_modules/foo/index.mjs"],"messageChain":[{"pos":20,"end":25,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo/index.d.ts","foo"],"repopulateInfo":{"kind":2,"moduleReference":"foo","mode":99}}]}]]]} +{"version":"FakeTSVersion","root":[5],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4]],"options":{"module":100,"moduleResolution":3,"strict":true,"types":[]},"referencedMap":[[5,1]],"semanticDiagnosticsPerFile":[[5,[{"pos":20,"end":25,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo","/home/src/projects/project/node_modules/foo/index.mjs"],"messageChain":[{"pos":20,"end":25,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo/index.d.ts","foo"],"repopulateInfo":{"kind":2,"moduleReference":"foo","mode":99}}]}]]]} //// [/home/src/projects/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -1591,7 +1593,9 @@ Found 1 error in index.mts:1 ], "options": { "module": 100, - "strict": true + "moduleResolution": 3, + "strict": true, + "types": [] }, "referencedMap": { "./index.mts": [ @@ -1636,7 +1640,7 @@ Found 1 error in index.mts:1 ] ] ], - "size": 2417 + "size": 2449 } tsconfig.json:: @@ -1769,7 +1773,7 @@ Resolving real path for '/home/src/projects/project/node_modules/@types/bar2/ind ======== Module name 'bar2' was successfully resolved to '/home/src/projects/project/node_modules/@types/bar2/index.d.ts' with Package ID '@types/bar2/index.d.ts@1.0.0'. ======== //// [/home/src/projects/project/index.mjs] *rewrite with same content* //// [/home/src/projects/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[6],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4,5]],"options":{"module":100,"strict":true},"referencedMap":[[6,1]]} +{"version":"FakeTSVersion","root":[6],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./node_modules/@types/bar2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;","da9728b78f5d24b38c00844e001b4953-export declare const bar2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4,5]],"options":{"module":100,"moduleResolution":3,"strict":true,"types":[]},"referencedMap":[[6,1]]} //// [/home/src/projects/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -1856,7 +1860,9 @@ Resolving real path for '/home/src/projects/project/node_modules/@types/bar2/ind ], "options": { "module": 100, - "strict": true + "moduleResolution": 3, + "strict": true, + "types": [] }, "referencedMap": { "./index.mts": [ @@ -1866,7 +1872,7 @@ Resolving real path for '/home/src/projects/project/node_modules/@types/bar2/ind "./node_modules/@types/bar2/index.d.ts" ] }, - "size": 1875 + "size": 1907 } tsconfig.json:: @@ -2049,7 +2055,7 @@ Found 1 error in index.mts:4 //// [/home/src/projects/project/index.mjs] *rewrite with same content* //// [/home/src/projects/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[5],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4]],"options":{"module":100,"strict":true},"referencedMap":[[5,1]],"semanticDiagnosticsPerFile":[[5,[{"pos":104,"end":110,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar2","/home/src/projects/project/node_modules/bar2/index.mjs"],"messageChain":[{"pos":104,"end":110,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar2/index.d.ts","@types/bar2"],"repopulateInfo":{"kind":2,"moduleReference":"bar2","mode":99}}]}]]]} +{"version":"FakeTSVersion","root":[5],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./node_modules/foo2/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;","165b91a7791663df5931f0b63ebf9ce2-export declare const foo2: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3,4]],"options":{"module":100,"moduleResolution":3,"strict":true,"types":[]},"referencedMap":[[5,1]],"semanticDiagnosticsPerFile":[[5,[{"pos":104,"end":110,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar2","/home/src/projects/project/node_modules/bar2/index.mjs"],"messageChain":[{"pos":104,"end":110,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar2/index.d.ts","@types/bar2"],"repopulateInfo":{"kind":2,"moduleReference":"bar2","mode":99}}]}]]]} //// [/home/src/projects/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -2128,7 +2134,9 @@ Found 1 error in index.mts:4 ], "options": { "module": 100, - "strict": true + "moduleResolution": 3, + "strict": true, + "types": [] }, "referencedMap": { "./index.mts": [ @@ -2173,7 +2181,7 @@ Found 1 error in index.mts:4 ] ] ], - "size": 2366 + "size": 2398 } tsconfig.json:: @@ -2393,7 +2401,7 @@ Found 2 errors in the same file, starting at: index.mts:3 //// [/home/src/projects/project/index.mjs] *rewrite with same content* //// [/home/src/projects/project/tsconfig.tsbuildinfo] *modified* -{"version":"FakeTSVersion","root":[4],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3]],"options":{"module":100,"strict":true},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"pos":75,"end":81,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo2","/home/src/projects/project/node_modules/foo2/index.mjs"],"messageChain":[{"pos":75,"end":81,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo2/index.d.ts","foo2"],"repopulateInfo":{"kind":2,"moduleReference":"foo2","mode":99}}]},{"pos":104,"end":110,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar2","/home/src/projects/project/node_modules/bar2/index.mjs"],"messageChain":[{"pos":104,"end":110,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar2/index.d.ts","@types/bar2"],"repopulateInfo":{"kind":2,"moduleReference":"bar2","mode":99}}]}]]]} +{"version":"FakeTSVersion","root":[4],"packageJsons":["./node_modules/@types/bar/package.json","./node_modules/@types/bar2/package.json","./node_modules/bar/package.json","./node_modules/bar2/package.json","./node_modules/foo/package.json","./node_modules/foo2/package.json"],"missingPackageJsons":["./node_modules/@types/foo2/package.json"],"fileNames":["lib.es2026.full.d.ts","./node_modules/foo/index.d.ts","./node_modules/@types/bar/index.d.ts","./index.mts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},"2a914bfad3bba77712486af8a4cdc415-export declare const foo: number;","78bc7ca8c840e090086811119f6d6ba9-export declare const bar: number;",{"version":"eee0814e4a127747fb836acc50eaeb5a-import { foo } from \"foo\";\nimport { bar } from \"bar\";\nimport { foo2 } from \"foo2\";\nimport { bar2 } from \"bar2\";","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":99}],"fileIdsList":[[2,3]],"options":{"module":100,"moduleResolution":3,"strict":true,"types":[]},"referencedMap":[[4,1]],"semanticDiagnosticsPerFile":[[4,[{"pos":75,"end":81,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["foo2","/home/src/projects/project/node_modules/foo2/index.mjs"],"messageChain":[{"pos":75,"end":81,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/foo2/index.d.ts","foo2"],"repopulateInfo":{"kind":2,"moduleReference":"foo2","mode":99}}]},{"pos":104,"end":110,"code":7016,"category":1,"messageKey":"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","messageArgs":["bar2","/home/src/projects/project/node_modules/bar2/index.mjs"],"messageChain":[{"pos":104,"end":110,"code":6278,"category":3,"messageKey":"There_are_types_at_0_but_this_result_could_not_be_resolved_when_respecting_package_json_exports_The__6278","messageArgs":["/home/src/projects/project/node_modules/@types/bar2/index.d.ts","@types/bar2"],"repopulateInfo":{"kind":2,"moduleReference":"bar2","mode":99}}]}]]]} //// [/home/src/projects/project/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -2467,7 +2475,9 @@ Found 2 errors in the same file, starting at: index.mts:3 ], "options": { "module": 100, - "strict": true + "moduleResolution": 3, + "strict": true, + "types": [] }, "referencedMap": { "./index.mts": [ @@ -2540,7 +2550,7 @@ Found 2 errors in the same file, starting at: index.mts:3 ] ] ], - "size": 2875 + "size": 2907 } tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tsc/projectReferences/issues-a-nice-error-when-the-input-file-is-missing-when-module-reference-is-not-relative.js b/tsc/testdata/baselines/reference/tsc/projectReferences/issues-a-nice-error-when-the-input-file-is-missing-when-module-reference-is-not-relative.js index 9149f552bc1e9..84d1bf399e3ee 100644 --- a/tsc/testdata/baselines/reference/tsc/projectReferences/issues-a-nice-error-when-the-input-file-is-missing-when-module-reference-is-not-relative.js +++ b/tsc/testdata/baselines/reference/tsc/projectReferences/issues-a-nice-error-when-the-input-file-is-missing-when-module-reference-is-not-relative.js @@ -65,7 +65,7 @@ export {}; export {}; //// [/home/src/workspaces/project/beta/bin/tsconfig.tsbuildinfo] *new* -{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"311c3bac923f08ac35ab2246c3464fb7-import { m } from '@alpha/a'","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./"},"semanticDiagnosticsPerFile":[[2,[{"pos":18,"end":28,"code":6305,"category":1,"messageKey":"Output_file_0_has_not_been_built_from_source_file_1_6305","messageArgs":["/home/src/workspaces/project/alpha/bin/a.d.ts","/home/src/workspaces/project/alpha/a.ts"]}]]],"latestChangedDtsFile":"./b.d.ts"} +{"version":"FakeTSVersion","root":[2],"fileNames":["lib.es2026.full.d.ts","../b.ts"],"fileInfos":[{"version":"8859c12c614ce56ba9a18e58384a198f-/// \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 {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };","affectsGlobalScope":true,"impliedNodeFormat":1},{"version":"311c3bac923f08ac35ab2246c3464fb7-import { m } from '@alpha/a'","signature":"abe7d9981d6018efb6b2b794f40a1607-export {};\n","impliedNodeFormat":1}],"options":{"composite":true,"outDir":"./","paths":{"@alpha/*":["../alpha/*"]},"pathsBasePath":".."},"semanticDiagnosticsPerFile":[[2,[{"pos":18,"end":28,"code":6305,"category":1,"messageKey":"Output_file_0_has_not_been_built_from_source_file_1_6305","messageArgs":["/home/src/workspaces/project/alpha/bin/a.d.ts","/home/src/workspaces/project/alpha/a.ts"]}]]],"latestChangedDtsFile":"./b.d.ts"} //// [/home/src/workspaces/project/beta/bin/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -108,7 +108,13 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@alpha/*": [ + "../alpha/*" + ] + }, + "pathsBasePath": ".." }, "semanticDiagnosticsPerFile": [ [ @@ -129,7 +135,7 @@ export {}; ] ], "latestChangedDtsFile": "./b.d.ts", - "size": 1364 + "size": 1421 } beta/tsconfig.json:: diff --git a/tsc/testdata/baselines/reference/tscWatch/commandLineWatch/watch-handles-tsconfig-with-extends-base-modified.js b/tsc/testdata/baselines/reference/tscWatch/commandLineWatch/watch-handles-tsconfig-with-extends-base-modified.js index b12e71f73cc31..651181739c225 100644 --- a/tsc/testdata/baselines/reference/tscWatch/commandLineWatch/watch-handles-tsconfig-with-extends-base-modified.js +++ b/tsc/testdata/baselines/reference/tscWatch/commandLineWatch/watch-handles-tsconfig-with-extends-base-modified.js @@ -79,6 +79,7 @@ Found 1 error in index.ts:1 [HH:MM:SS AM] Found 1 error. Watching for file changes. +//// [/home/src/workspaces/project/index.js] *rewrite with same content* Watch Registrations:: Directory watches::