From cb9fb345c22ffcc3e8f5e807b14615834c8ceb5b Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:01:39 -0700 Subject: [PATCH 01/24] Test incremental invalidation after compiler option changes Option-only edits can leave declarations, diagnostics, and dependent projects inconsistent with a fresh build. These baselines capture the existing behavior before correcting invalidation. A subsequent source edit also demonstrates that option-only declaration emit can leave stale shape signatures, even for an option already classified as affecting emit. --- .../execute/tsctests/tscbuild_test.go | 433 ++++++++++++ ...owArbitraryExtensions-build-direction-0.js | 435 ++++++++++++ ...owArbitraryExtensions-build-direction-1.js | 417 ++++++++++++ ...ImportingTsExtensions-build-direction-0.js | 538 +++++++++++++++ ...ImportingTsExtensions-build-direction-1.js | 538 +++++++++++++++ .../customConditions-build-direction-0.js | 422 ++++++++++++ .../customConditions-build-direction-1.js | 422 ++++++++++++ ...ustomConditions-unset-build-direction-0.js | 421 ++++++++++++ ...ustomConditions-unset-build-direction-1.js | 421 ++++++++++++ ...decorator-nullability-build-direction-0.js | 367 ++++++++++ ...decorator-nullability-build-direction-1.js | 367 ++++++++++ .../deduplicatePackages-build-direction-0.js | 539 +++++++++++++++ .../deduplicatePackages-build-direction-1.js | 427 ++++++++++++ .../isolatedDeclarations-build-direction-0.js | 428 ++++++++++++ .../isolatedDeclarations-build-direction-1.js | 491 ++++++++++++++ .../isolatedModules-build-direction-0.js | 270 ++++++++ .../isolatedModules-build-direction-1.js | 270 ++++++++ ...es-preserveConstEnums-build-direction-0.js | 275 ++++++++ ...es-preserveConstEnums-build-direction-1.js | 275 ++++++++ .../jsxFactory-build-direction-0.js | 359 ++++++++++ .../jsxFactory-build-direction-1.js | 359 ++++++++++ .../jsxFragmentFactory-build-direction-0.js | 275 ++++++++ .../jsxFragmentFactory-build-direction-1.js | 275 ++++++++ .../moduleResolution-build-direction-0.js | 543 +++++++++++++++ .../moduleResolution-build-direction-1.js | 543 +++++++++++++++ ...oduleResolution-unset-build-direction-0.js | 542 +++++++++++++++ ...oduleResolution-unset-build-direction-1.js | 542 +++++++++++++++ .../noImplicitAny-build-direction-0.js | 359 ++++++++++ .../noImplicitAny-build-direction-1.js | 359 ++++++++++ .../noImplicitThis-build-direction-0.js | 371 ++++++++++ .../noImplicitThis-build-direction-1.js | 371 ++++++++++ ...ncheckedIndexedAccess-build-direction-0.js | 360 ++++++++++ ...ncheckedIndexedAccess-build-direction-1.js | 360 ++++++++++ .../paths-build-direction-0.js | 533 +++++++++++++++ .../paths-build-direction-1.js | 533 +++++++++++++++ .../paths-unset-build-direction-0.js | 528 +++++++++++++++ .../paths-unset-build-direction-1.js | 528 +++++++++++++++ ...lvePackageJsonExports-build-direction-0.js | 417 ++++++++++++ ...lvePackageJsonExports-build-direction-1.js | 417 ++++++++++++ ...kageJsonExports-unset-build-direction-0.js | 416 ++++++++++++ ...kageJsonExports-unset-build-direction-1.js | 416 ++++++++++++ ...lvePackageJsonImports-build-direction-0.js | 533 +++++++++++++++ ...lvePackageJsonImports-build-direction-1.js | 533 +++++++++++++++ ...kageJsonImports-unset-build-direction-0.js | 532 +++++++++++++++ ...kageJsonImports-unset-build-direction-1.js | 532 +++++++++++++++ ...ativeImportExtensions-build-direction-0.js | 401 +++++++++++ ...ativeImportExtensions-build-direction-1.js | 425 ++++++++++++ ...ions-inferred-imports-build-direction-0.js | 538 +++++++++++++++ ...ions-inferred-imports-build-direction-1.js | 538 +++++++++++++++ .../rootDirs-build-direction-0.js | 426 ++++++++++++ .../rootDirs-build-direction-1.js | 426 ++++++++++++ .../rootDirs-unset-build-direction-0.js | 425 ++++++++++++ .../rootDirs-unset-build-direction-1.js | 425 ++++++++++++ ...edit-after-changing-stripInternal-build.js | 600 +++++++++++++++++ .../strict-build-direction-0.js | 355 ++++++++++ .../strict-build-direction-1.js | 355 ++++++++++ .../strict-default-build-direction-0.js | 353 ++++++++++ .../strict-default-build-direction-1.js | 352 ++++++++++ .../strict-overridden-build-direction-0.js | 288 ++++++++ .../strict-overridden-build-direction-1.js | 288 ++++++++ .../strictBindCallApply-build-direction-0.js | 363 ++++++++++ .../strictBindCallApply-build-direction-1.js | 363 ++++++++++ ...BuiltinIteratorReturn-build-direction-0.js | 363 ++++++++++ ...BuiltinIteratorReturn-build-direction-1.js | 363 ++++++++++ .../strictFunctionTypes-build-direction-0.js | 388 +++++++++++ .../strictFunctionTypes-build-direction-1.js | 388 +++++++++++ .../strictNullChecks-build-direction-0.js | 365 ++++++++++ .../strictNullChecks-build-direction-1.js | 365 ++++++++++ .../typeRoots-build-direction-0.js | 376 +++++++++++ .../typeRoots-build-direction-1.js | 376 +++++++++++ .../types-build-direction-0.js | 382 +++++++++++ .../types-build-direction-1.js | 382 +++++++++++ ...knownInCatchVariables-build-direction-0.js | 359 ++++++++++ ...knownInCatchVariables-build-direction-1.js | 359 ++++++++++ ...ropertyTypes-changes-from-false-to-true.js | 623 +++++++++++++++++ ...ropertyTypes-changes-from-true-to-false.js | 636 ++++++++++++++++++ ...traryExtensions-incremental-direction-0.js | 407 +++++++++++ ...traryExtensions-incremental-direction-1.js | 391 +++++++++++ ...ingTsExtensions-incremental-direction-0.js | 523 ++++++++++++++ ...ingTsExtensions-incremental-direction-1.js | 523 ++++++++++++++ ...ustomConditions-incremental-direction-0.js | 402 +++++++++++ ...ustomConditions-incremental-direction-1.js | 402 +++++++++++ ...onditions-unset-incremental-direction-0.js | 401 +++++++++++ ...onditions-unset-incremental-direction-1.js | 401 +++++++++++ ...tor-nullability-incremental-direction-0.js | 351 ++++++++++ ...tor-nullability-incremental-direction-1.js | 351 ++++++++++ ...plicatePackages-incremental-direction-0.js | 522 ++++++++++++++ ...plicatePackages-incremental-direction-1.js | 411 +++++++++++ ...tedDeclarations-incremental-direction-0.js | 406 +++++++++++ ...tedDeclarations-incremental-direction-1.js | 463 +++++++++++++ ...isolatedModules-incremental-direction-0.js | 250 +++++++ ...isolatedModules-incremental-direction-1.js | 250 +++++++ ...serveConstEnums-incremental-direction-0.js | 255 +++++++ ...serveConstEnums-incremental-direction-1.js | 255 +++++++ .../jsxFactory-incremental-direction-0.js | 338 ++++++++++ .../jsxFactory-incremental-direction-1.js | 338 ++++++++++ ...FragmentFactory-incremental-direction-0.js | 255 +++++++ ...FragmentFactory-incremental-direction-1.js | 255 +++++++ ...oduleResolution-incremental-direction-0.js | 512 ++++++++++++++ ...oduleResolution-incremental-direction-1.js | 512 ++++++++++++++ ...esolution-unset-incremental-direction-0.js | 511 ++++++++++++++ ...esolution-unset-incremental-direction-1.js | 511 ++++++++++++++ .../noImplicitAny-incremental-direction-0.js | 342 ++++++++++ .../noImplicitAny-incremental-direction-1.js | 342 ++++++++++ .../noImplicitThis-incremental-direction-0.js | 354 ++++++++++ .../noImplicitThis-incremental-direction-1.js | 354 ++++++++++ ...edIndexedAccess-incremental-direction-0.js | 343 ++++++++++ ...edIndexedAccess-incremental-direction-1.js | 343 ++++++++++ .../paths-incremental-direction-0.js | 502 ++++++++++++++ .../paths-incremental-direction-1.js | 502 ++++++++++++++ .../paths-unset-incremental-direction-0.js | 497 ++++++++++++++ .../paths-unset-incremental-direction-1.js | 497 ++++++++++++++ ...kageJsonExports-incremental-direction-0.js | 397 +++++++++++ ...kageJsonExports-incremental-direction-1.js | 397 +++++++++++ ...onExports-unset-incremental-direction-0.js | 396 +++++++++++ ...onExports-unset-incremental-direction-1.js | 396 +++++++++++ ...kageJsonImports-incremental-direction-0.js | 502 ++++++++++++++ ...kageJsonImports-incremental-direction-1.js | 502 ++++++++++++++ ...onImports-unset-incremental-direction-0.js | 501 ++++++++++++++ ...onImports-unset-incremental-direction-1.js | 501 ++++++++++++++ ...mportExtensions-incremental-direction-0.js | 382 +++++++++++ ...mportExtensions-incremental-direction-1.js | 401 +++++++++++ ...nferred-imports-incremental-direction-0.js | 523 ++++++++++++++ ...nferred-imports-incremental-direction-1.js | 523 ++++++++++++++ .../rootDirs-incremental-direction-0.js | 407 +++++++++++ .../rootDirs-incremental-direction-1.js | 407 +++++++++++ .../rootDirs-unset-incremental-direction-0.js | 406 +++++++++++ .../rootDirs-unset-incremental-direction-1.js | 406 +++++++++++ ...fter-changing-stripInternal-incremental.js | 575 ++++++++++++++++ .../strict-default-incremental-direction-0.js | 336 +++++++++ .../strict-default-incremental-direction-1.js | 335 +++++++++ .../strict-incremental-direction-0.js | 338 ++++++++++ .../strict-incremental-direction-1.js | 338 ++++++++++ ...rict-overridden-incremental-direction-0.js | 271 ++++++++ ...rict-overridden-incremental-direction-1.js | 271 ++++++++ ...ctBindCallApply-incremental-direction-0.js | 346 ++++++++++ ...ctBindCallApply-incremental-direction-1.js | 346 ++++++++++ ...nIteratorReturn-incremental-direction-0.js | 346 ++++++++++ ...nIteratorReturn-incremental-direction-1.js | 346 ++++++++++ ...ctFunctionTypes-incremental-direction-0.js | 371 ++++++++++ ...ctFunctionTypes-incremental-direction-1.js | 371 ++++++++++ ...trictNullChecks-incremental-direction-0.js | 348 ++++++++++ ...trictNullChecks-incremental-direction-1.js | 348 ++++++++++ .../typeRoots-incremental-direction-0.js | 355 ++++++++++ .../typeRoots-incremental-direction-1.js | 355 ++++++++++ .../types-incremental-direction-0.js | 361 ++++++++++ .../types-incremental-direction-1.js | 361 ++++++++++ ...nCatchVariables-incremental-direction-0.js | 342 ++++++++++ ...nCatchVariables-incremental-direction-1.js | 342 ++++++++++ 149 files changed, 60659 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/source-edit-after-changing-stripInternal-build.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-false-to-true.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-true-to-false.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-unset-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/source-edit-after-changing-stripInternal-incremental.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 1e6c958bd396f..fe3d89adc1ca2 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,436 @@ 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), + ) + }, + expectedDiff: "Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics.", + }, + { + caption: "no change", + expectedDiff: "Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics.", + }, + { + 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 + matches [2]bool +} + +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", "") + }, + expectedDiff: "Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics.", + }, + { + caption: "no change", + expectedDiff: "Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics.", + }, + {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"} + } + expectedDiff := "" + if !test.matches[direction] { + expectedDiff = "Changing " + test.option + " without editing source files leaves stale output or diagnostics." + } + 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])) + }, + expectedDiff: expectedDiff, + }, + {caption: "no change", expectedDiff: expectedDiff}, + { + caption: "force rebuild with the same compiler options", + commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}, + }, + noChange, + }, + } + input.run(t, "compilerOptionChanges") + } + } + } +} + +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}, matches: [2]bool{true, 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 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}, matches: [2]bool{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 TestBuildFileDelete(t *testing.T) { t.Parallel() testCases := []*tscInput{ 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..e40be33e5318d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js @@ -0,0 +1,435 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1678 +} + +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:: 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:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,1 @@ +-export declare const result: { +- value: string; +-}; ++export declare const result: any; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,1 @@ +-export declare const result: { +- value: string; +-}; ++export declare const result: any; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1443 +} + +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..be85c23134fcc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js @@ -0,0 +1,417 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1443 +} + +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:: 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:: + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,3 @@ +-export declare const result: any; ++export declare const result: { ++ value: string; ++}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,3 @@ +-export declare const result: any; ++export declare const result: { ++ value: string; ++}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1678 +} + +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..98331de638a54 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js @@ -0,0 +1,538 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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/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":true,"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/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": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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' + + + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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..a29200c75f84f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js @@ -0,0 +1,538 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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/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":false,"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/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": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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' + + + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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/customConditions-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js new file mode 100644 index 0000000000000..01c360c7b19a3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js @@ -0,0 +1,422 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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, + "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": 2010 +} + +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'... + +[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:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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' + + + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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..38dee748b0e83 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js @@ -0,0 +1,422 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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'... + +[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:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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' + + + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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] *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,"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, + "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": 2010 +} + +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..dbbf56903e764 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-0.js @@ -0,0 +1,421 @@ +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,"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, + "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": 2010 +} + +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'... + +[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:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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' + + + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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..c4bbbeebcfe00 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-unset-build-direction-1.js @@ -0,0 +1,421 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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'... + +[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:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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' + + + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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] *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,"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, + "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": 2010 +} + +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..866c30f755cea --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-0.js @@ -0,0 +1,367 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1479 +} + +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/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "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/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [Object]) ++ __metadata("design:paramtypes", [String]) + ], Result); + export { Result }; + + +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' + + + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [Object]) ++ __metadata("design:paramtypes", [String]) + ], Result); + export { Result }; + + +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] *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] *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..10209971f7b92 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/decorator-nullability-build-direction-1.js @@ -0,0 +1,367 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "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/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/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1479 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [String]) ++ __metadata("design:paramtypes", [Object]) + ], Result); + export { Result }; + + +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' + + + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [String]) ++ __metadata("design:paramtypes", [Object]) + ], Result); + export { Result }; + + +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] *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] *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..20498cb75cc45 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js @@ -0,0 +1,539 @@ +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,"module":99,"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, + "module": 99, + "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": 2079 +} + +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/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":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": "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" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1948 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts + + +Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"[]; ++export declare const result: ("first" | "second")[]; + + +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' + + + + +Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"[]; ++export declare const result: ("first" | "second")[]; + + +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] *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,"module":99,"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, + "module": 99, + "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": 1933 +} + +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..3ec8dd968664c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js @@ -0,0 +1,427 @@ +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,"module":99,"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, + "module": 99, + "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": 1933 +} + +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,"module":99,"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, + "module": 99, + "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": 2079 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*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/isolatedDeclarations-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js new file mode 100644 index 0000000000000..e88699ebe9c1a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js @@ -0,0 +1,428 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1262 +} + +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:: 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":"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,"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": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1261 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,12 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,12 +0,0 @@ +-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 +- + +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,"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, + "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": 1448 +} + +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..fddff0070ae0b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js @@ -0,0 +1,491 @@ +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,"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, + "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": 1448 +} + +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:: 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 + +//// [/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":false,"module":99,"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": false, + "module": 99, + "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": 1449 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export declare const result: number; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,12 @@ ++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 ++ + +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:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export declare const result: number; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,12 @@ ++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 ++ + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1262 +} + +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..d6c53162290ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js @@ -0,0 +1,270 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1340 +} + +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'... + +[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:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,5 +1,1 @@ +-var Value; +-(function (Value) { +- Value[Value["Result"] = 1] = "Result"; +-})(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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' + + + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,5 +1,1 @@ +-var Value; +-(function (Value) { +- Value[Value["Result"] = 1] = "Result"; +-})(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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] *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] *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..ffe04d4e7b997 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js @@ -0,0 +1,270 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1340 +} + +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'... + +[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:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,5 @@ +-export const result = 1 /* Value.Result */; ++var Value; ++(function (Value) { ++ Value[Value["Result"] = 1] = "Result"; ++})(Value || (Value = {})); ++export const result = Value.Result; + + +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' + + + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,5 @@ +-export const result = 1 /* Value.Result */; ++var Value; ++(function (Value) { ++ Value[Value["Result"] = 1] = "Result"; ++})(Value || (Value = {})); ++export const result = Value.Result; + + +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] *modified* +export const result = 1 /* Value.Result */; + +//// [/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..2b07c8e3c910e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-0.js @@ -0,0 +1,275 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1366 +} + +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'... + +[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:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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' + + + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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] *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] *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..46d2173c8eed1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-preserveConstEnums-build-direction-1.js @@ -0,0 +1,275 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1366 +} + +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'... + +[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:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = 1 /* Value.Result */; ++export const result = Value.Result; + + +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' + + + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = 1 /* Value.Result */; ++export const result = Value.Result; + + +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] *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] *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..6494fd1a79f22 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js @@ -0,0 +1,359 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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'... + +[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:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace B { ++declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- b: number; ++ a: string; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: B.JSX.Element; ++export declare const result: A.JSX.Element; + export {}; + + +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' + + + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace B { ++declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- b: number; ++ a: string; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: B.JSX.Element; ++export declare const result: A.JSX.Element; + export {}; + + +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] *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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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..13bb8807c4ce1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js @@ -0,0 +1,359 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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'... + +[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:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace A { ++declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- a: string; ++ b: number; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: A.JSX.Element; ++export declare const result: B.JSX.Element; + export {}; + + +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' + + + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace A { ++declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- a: string; ++ b: number; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: A.JSX.Element; ++export declare const result: B.JSX.Element; + export {}; + + +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] *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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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..e76208d86d127 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js @@ -0,0 +1,275 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1712 +} + +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'... + +[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:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(B.Fragment, null, ++export const result = A.create(A.Fragment, null, + A.create("div", null)); + + +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' + + + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(B.Fragment, null, ++export const result = A.create(A.Fragment, null, + A.create("div", null)); + + +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] *modified* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/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..fec690efd0c1e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js @@ -0,0 +1,275 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1712 +} + +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'... + +[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:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(A.Fragment, null, ++export const result = A.create(B.Fragment, null, + A.create("div", null)); + + +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' + + + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(A.Fragment, null, ++export const result = A.create(B.Fragment, null, + A.create("div", null)); + + +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] *modified* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/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/moduleResolution-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js new file mode 100644 index 0000000000000..c07437b120db5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js @@ -0,0 +1,543 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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/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..e5689abcd1a66 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js @@ -0,0 +1,543 @@ +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,"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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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..eb3fb05c569e2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-0.js @@ -0,0 +1,542 @@ +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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..b32b908ff5fb5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-unset-build-direction-1.js @@ -0,0 +1,542 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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/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/noImplicitAny-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js new file mode 100644 index 0000000000000..198651d7a6f6e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js @@ -0,0 +1,359 @@ +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,"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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1293 +} + +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/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,"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": "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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1292 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): number; ++export declare function result(): any; + + +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' + + + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): number; ++export declare function result(): any; + + +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] *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,"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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1295 +} + +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..98039c755118d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js @@ -0,0 +1,359 @@ +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,"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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1295 +} + +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/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,"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": "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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "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:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): number; + + +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' + + + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): number; + + +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] *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,"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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1293 +} + +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..955acee3a96d6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js @@ -0,0 +1,371 @@ +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,"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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1328 +} + +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/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,"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": "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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1327 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): number; ++ get(): any; + }; + + +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' + + + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): number; ++ get(): any; + }; + + +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] *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,"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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1330 +} + +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..cfee4768369e7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js @@ -0,0 +1,371 @@ +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,"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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1330 +} + +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/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,"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": "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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1331 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): any; ++ get(): number; + }; + + +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' + + + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): any; ++ get(): number; + }; + + +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] *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,"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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1328 +} + +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-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js new file mode 100644 index 0000000000000..7b4a1d37bc784 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js @@ -0,0 +1,360 @@ +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,"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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1321 +} + +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/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,"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": "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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1320 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number | undefined; ++export declare const result: number; + + +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' + + + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number | undefined; ++export declare const result: number; + + +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] *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,"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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1332 +} + +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..27725e72aedc7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js @@ -0,0 +1,360 @@ +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,"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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1332 +} + +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/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,"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": "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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1333 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number; ++export declare const result: number | undefined; + + +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' + + + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number; ++export declare const result: number | undefined; + + +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] *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,"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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1321 +} + +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..d3d82ea44efd4 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js @@ -0,0 +1,533 @@ +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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1921 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("short").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("short").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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..69744e4260187 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js @@ -0,0 +1,533 @@ +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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("renamed").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("renamed").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1921 +} + +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..fc1af1e406ccb --- /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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1933 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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..93ec57d3d8062 --- /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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("renamed").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("renamed").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1933 +} + +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/resolvePackageJsonExports-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js new file mode 100644 index 0000000000000..ae73743236cfe --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-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":{"./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,"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": "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, + "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": 2019 +} + +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'... + +[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:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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' + + + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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] *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,"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, + "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": 2007 +} + +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..76ed070c1dc7b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-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":{"./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,"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, + "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": 2007 +} + +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'... + +[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:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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' + + + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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] *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,"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": "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, + "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": 2019 +} + +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..b7924cbd92a37 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-0.js @@ -0,0 +1,416 @@ +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,"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, + "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": 2007 +} + +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'... + +[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:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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' + + + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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] *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,"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": "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, + "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": 2019 +} + +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..f0ca3f0c9f4f9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-unset-build-direction-1.js @@ -0,0 +1,416 @@ +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,"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": "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, + "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": 2019 +} + +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'... + +[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:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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' + + + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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] *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,"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, + "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": 2007 +} + +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..33f6e2d85f240 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js @@ -0,0 +1,533 @@ +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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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..39a74af5d9640 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js @@ -0,0 +1,533 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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] *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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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..5b74f8eb7e943 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-0.js @@ -0,0 +1,532 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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] *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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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..02f91d5e1c790 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-unset-build-direction-1.js @@ -0,0 +1,532 @@ +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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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..c59848999fdc9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js @@ -0,0 +1,401 @@ +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,"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, + "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": 1487 +} + +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/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1435 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.js'; ++export { result } from './other.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/other.ts' is older than output 'producer/dist/tsconfig.tsbuildinfo' + + + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.js'; ++export { result } from './other.ts'; + + +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] *modified* +export { result } from './other.js'; + +//// [/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..aee363edfb332 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js @@ -0,0 +1,425 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1435 +} + +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/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,"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, + "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": 1487 +} + +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:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.ts'; ++export { result } from './other.js'; + + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.ts'; ++export { result } from './other.js'; + + +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] *modified* +export { result } from './other.ts'; + +//// [/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..510bcb6bac2fd --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-0.js @@ -0,0 +1,538 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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/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,"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": "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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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' + + + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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..3ed7fcbb12499 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-build-direction-1.js @@ -0,0 +1,538 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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/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,"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": "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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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' + + + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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..af8305b7a4d1a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js @@ -0,0 +1,426 @@ +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,"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, + "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": 1914 +} + +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'... + +[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:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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' + + + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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] *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,"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": "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, + "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": 1903 +} + +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..10b6bdbec4c52 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js @@ -0,0 +1,426 @@ +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,"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": "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, + "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": 1903 +} + +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'... + +[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:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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' + + + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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] *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,"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, + "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": 1914 +} + +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..332b6a0ddb02d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-0.js @@ -0,0 +1,425 @@ +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,"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, + "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": 1914 +} + +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'... + +[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:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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' + + + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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] *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,"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": "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, + "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": 1903 +} + +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..a5df7b4802270 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-unset-build-direction-1.js @@ -0,0 +1,425 @@ +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,"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": "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, + "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": 1903 +} + +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'... + +[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:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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' + + + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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] *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,"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, + "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": 1914 +} + +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..855a4f06df6b8 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/source-edit-after-changing-stripInternal-build.js @@ -0,0 +1,600 @@ +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":"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":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts","emitSignatures":[[2,"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n"]]} +//// [/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": "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": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./a.d.ts", + "emitSignatures": [ + { + "file": "../a.ts", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "original": [ + 2, + "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n" + ] + } + ], + "size": 1676 +} + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +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:: 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 'a.ts' + +[HH:MM:SS AM] Building project 'tsconfig.json'... + +//// [/home/src/workspaces/project/dist/a.d.ts] *modified* +export declare class Result { +} + +//// [/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":"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": "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": "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": 1500 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/a.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/a.ts + + +Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. +--- nonIncremental /home/src/workspaces/project/dist/b.d.ts ++++ incremental /home/src/workspaces/project/dist/b.d.ts +@@ -1,1 +1,1 @@ +-export declare const forwarded: any; ++export declare const forwarded: string; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [3]:: 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 'a.ts' is older than output 'dist/tsconfig.tsbuildinfo' + + + + +Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. +--- nonIncremental /home/src/workspaces/project/dist/b.d.ts ++++ incremental /home/src/workspaces/project/dist/b.d.ts +@@ -1,1 +1,1 @@ +-export declare const forwarded: any; ++export declare const forwarded: string; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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/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..d33c899a2f459 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js @@ -0,0 +1,355 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1275 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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' + + + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1287 +} + +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..a3ef0d873eb39 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js @@ -0,0 +1,355 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1287 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1288 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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' + + + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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..fe92fb74431ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-0.js @@ -0,0 +1,353 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1273 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1288 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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' + + + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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..87cf3cdfac112 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-default-build-direction-1.js @@ -0,0 +1,352 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1261 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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' + + + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1273 +} + +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..c3d9ead786693 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-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": ".", + "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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1312 +} + +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1311 +} + +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..cf644f9a3de66 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-overridden-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": 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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1311 +} + +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1312 +} + +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..27718b20bf2cf --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js @@ -0,0 +1,363 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "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 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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1542 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: () => number; ++export declare const result: any; + + +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' + + + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: () => number; ++export declare const result: any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1551 +} + +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..72e063928c363 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js @@ -0,0 +1,363 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1551 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1552 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: () => number; + + +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' + + + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: () => number; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "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 [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..2b508101df697 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js @@ -0,0 +1,363 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1506 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1505 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: any; + + +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' + + + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1520 +} + +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..7c4709424c986 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js @@ -0,0 +1,363 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1520 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1521 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: string | undefined; + + +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' + + + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1506 +} + +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..490bfb93b4226 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js @@ -0,0 +1,388 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1577 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1576 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,8 +1,5 @@ + interface Animal { + name: string; + } +-interface Dog extends Animal { +- bark(): void; +-} +-export declare const result: Dog; ++export declare const result: Animal; + export {}; + + +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' + + + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,8 +1,5 @@ + interface Animal { + name: string; + } +-interface Dog extends Animal { +- bark(): void; +-} +-export declare const result: Dog; ++export declare const result: Animal; + export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1627 +} + +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..76b6aa7c7b796 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js @@ -0,0 +1,388 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1627 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1628 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,5 +1,8 @@ + interface Animal { + name: string; + } +-export declare const result: Animal; ++interface Dog extends Animal { ++ bark(): void; ++} ++export declare const result: Dog; + export {}; + + +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' + + + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,5 +1,8 @@ + interface Animal { + name: string; + } +-export declare const result: Animal; ++interface Dog extends Animal { ++ bark(): void; ++} ++export declare const result: Dog; + export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1577 +} + +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..96d780259f46c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js @@ -0,0 +1,365 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1337 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1336 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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' + + + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1348 +} + +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..5ffe27699990e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js @@ -0,0 +1,365 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1348 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1349 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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' + + + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1337 +} + +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/typeRoots-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js new file mode 100644 index 0000000000000..3752c606edf03 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js @@ -0,0 +1,376 @@ +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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1565 +} + +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'... + +[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:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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' + + + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1564 +} + +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..0aa07e7655086 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js @@ -0,0 +1,376 @@ +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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1564 +} + +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'... + +[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:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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' + + + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1565 +} + +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..c1def93d5977e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js @@ -0,0 +1,382 @@ +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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1771 +} + +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'... + +[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:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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' + + + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1770 +} + +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..9029f65d20ae1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js @@ -0,0 +1,382 @@ +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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1770 +} + +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'... + +[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:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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' + + + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1771 +} + +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..899263136fba8 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js @@ -0,0 +1,359 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1319 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "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:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): unknown; ++export declare function result(): any; + + +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' + + + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): unknown; ++export declare function result(): any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1322 +} + +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..0479765fa6697 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js @@ -0,0 +1,359 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1322 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1323 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): unknown; + + +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' + + + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): unknown; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1319 +} + +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/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..92abfd98d5b2a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-false-to-true.js @@ -0,0 +1,623 @@ +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:: 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 up to date with .d.ts files from its dependencies + +[HH:MM:SS AM] Updating output timestamps of project 'consumer/tsconfig.json'... + +//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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":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": "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": true, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1312 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,3 @@ + export declare const result: { +- value?: string; ++ value?: string | undefined; + }; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,10 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,3 @@ + export declare const result: { +- value?: string; ++ value?: string | undefined; + }; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,10 +0,0 @@ +-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 +- + +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] *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/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..9f08247c15f6e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/exactOptionalPropertyTypes/declaration-emit-when-exactOptionalPropertyTypes-changes-from-true-to-false.js @@ -0,0 +1,636 @@ +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:: 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 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 + +//// [/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":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": "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": false, + "module": 99, + "outDir": "./", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1301 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + +consumer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,3 @@ + export declare const result: { +- value?: string | undefined; ++ value?: string; + }; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,10 @@ ++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 ++ + +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:: + + +Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,3 @@ + export declare const result: { +- value?: string | undefined; ++ value?: string; + }; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,10 @@ ++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 ++ + +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] *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/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/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..de4605c6ddd70 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js @@ -0,0 +1,407 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1678 +} + +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:: 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:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,1 @@ +-export declare const result: { +- value: string; +-}; ++export declare const result: any; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,1 @@ +-export declare const result: { +- value: string; +-}; ++export declare const result: any; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1443 +} + +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..253812412d212 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js @@ -0,0 +1,391 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../styles.d.css.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1443 +} + +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:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,3 @@ +-export declare const result: any; ++export declare const result: { ++ value: string; ++}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,3 @@ +-export declare const result: any; ++export declare const result: { ++ value: string; ++}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1678 +} + +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..d3e3f930821a7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js @@ -0,0 +1,523 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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/tsconfig.tsbuildinfo +//// [/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":true,"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/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": true, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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..3106efed11496 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js @@ -0,0 +1,523 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1949 +} + +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/tsconfig.tsbuildinfo +//// [/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":false,"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/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": false, + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 199, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1950 +} + +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/customConditions-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js new file mode 100644 index 0000000000000..07c9bb0242ba0 --- /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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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, + "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": 2010 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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..68be259c05b2b --- /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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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] *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,"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, + "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": 2010 +} + +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..98251eca67218 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-0.js @@ -0,0 +1,401 @@ +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,"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, + "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": 2010 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/special").Thing; ++export declare const result: import("fixture/fallback").Thing; + + +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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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..20ccb76c928a7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-unset-incremental-direction-1.js @@ -0,0 +1,401 @@ +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":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": [ + "../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": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 2009 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/fallback").Thing; ++export declare const result: import("fixture/special").Thing; + + +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] *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,"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, + "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": 2010 +} + +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..77ee104fb9b7d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-0.js @@ -0,0 +1,351 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1479 +} + +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/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":"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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "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/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [Object]) ++ __metadata("design:paramtypes", [String]) + ], Result); + export { Result }; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [Object]) ++ __metadata("design:paramtypes", [String]) + ], Result); + export { Result }; + + +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] *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] *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..a548270dec6c1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/decorator-nullability-incremental-direction-1.js @@ -0,0 +1,351 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "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/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/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":"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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1479 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [String]) ++ __metadata("design:paramtypes", [Object]) + ], Result); + export { Result }; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -12,6 +12,6 @@ + }; + Result = __decorate([ + decorate, +- __metadata("design:paramtypes", [String]) ++ __metadata("design:paramtypes", [Object]) + ], Result); + export { Result }; + + +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] *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] *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..f5dfb8fd4218b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js @@ -0,0 +1,522 @@ +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,"module":99,"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, + "module": 99, + "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": 2079 +} + +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/tsconfig.tsbuildinfo +//// [/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":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": "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" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "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": 1948 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/node_modules/second/index.d.ts +Signatures:: +(used version) /home/src/workspaces/project/producer/node_modules/second/index.d.ts + + +Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"[]; ++export declare const result: ("first" | "second")[]; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"[]; ++export declare const result: ("first" | "second")[]; + + +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] *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,"module":99,"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, + "module": 99, + "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": 1933 +} + +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..ba6d7ab7b79e9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js @@ -0,0 +1,411 @@ +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,"module":99,"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, + "module": 99, + "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": 1933 +} + +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,"module":99,"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, + "module": 99, + "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": 2079 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*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/isolatedDeclarations-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js new file mode 100644 index 0000000000000..51ea3b6716769 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js @@ -0,0 +1,406 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1262 +} + +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:: 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":"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,"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": true, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1261 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,12 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,12 +0,0 @@ +-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 +- + +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,"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, + "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": 1448 +} + +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..73a6a429fa301 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js @@ -0,0 +1,463 @@ +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,"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, + "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": 1448 +} + +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:: 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},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"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": false, + "module": 99, + "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": 1449 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export declare const result: number; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,12 @@ ++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 ++ + +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:: + + +Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export declare const result: number; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,12 @@ ++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 ++ + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1262 +} + +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..3cfb1c8654c89 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js @@ -0,0 +1,250 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1340 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,5 +1,1 @@ +-var Value; +-(function (Value) { +- Value[Value["Result"] = 1] = "Result"; +-})(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,5 +1,1 @@ +-var Value; +-(function (Value) { +- Value[Value["Result"] = 1] = "Result"; +-})(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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] *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] *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..fe6cba3ad4816 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js @@ -0,0 +1,250 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1340 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,5 @@ +-export const result = 1 /* Value.Result */; ++var Value; ++(function (Value) { ++ Value[Value["Result"] = 1] = "Result"; ++})(Value || (Value = {})); ++export const result = Value.Result; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,5 @@ +-export const result = 1 /* Value.Result */; ++var Value; ++(function (Value) { ++ Value[Value["Result"] = 1] = "Result"; ++})(Value || (Value = {})); ++export const result = Value.Result; + + +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] *modified* +export const result = 1 /* Value.Result */; + +//// [/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..b311f1945e5b2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-0.js @@ -0,0 +1,255 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1366 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = Value.Result; ++export const result = 1 /* Value.Result */; + + +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] *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] *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..5f0f3aedb468b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-preserveConstEnums-incremental-direction-1.js @@ -0,0 +1,255 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "preserveConstEnums": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1366 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = 1 /* Value.Result */; ++export const result = Value.Result; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -2,4 +2,4 @@ + (function (Value) { + Value[Value["Result"] = 1] = "Result"; + })(Value || (Value = {})); +-export const result = 1 /* Value.Result */; ++export const result = Value.Result; + + +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] *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] *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..677dd48f86fd0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js @@ -0,0 +1,338 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace B { ++declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- b: number; ++ a: string; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: B.JSX.Element; ++export declare const result: A.JSX.Element; + export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace B { ++declare namespace A { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- b: number; ++ a: string; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: B.JSX.Element; ++export declare const result: A.JSX.Element; + export {}; + + +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] *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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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..75ba75a1174af --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js @@ -0,0 +1,338 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace A { ++declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- a: string; ++ b: number; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: A.JSX.Element; ++export declare const result: B.JSX.Element; + export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,13 +1,13 @@ +-declare namespace A { ++declare namespace B { + function create(...args: any[]): any; + namespace JSX { + interface Element { +- a: string; ++ b: number; + } + interface IntrinsicElements { + div: {}; + } + } + } +-export declare const result: A.JSX.Element; ++export declare const result: B.JSX.Element; + export {}; + + +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] *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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1804 +} + +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..beb75ecb5d53c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js @@ -0,0 +1,255 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1712 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(B.Fragment, null, ++export const result = A.create(A.Fragment, null, + A.create("div", null)); + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(B.Fragment, null, ++export const result = A.create(A.Fragment, null, + A.create("div", null)); + + +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] *modified* +export const result = A.create(B.Fragment, null, + A.create("div", null)); + +//// [/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..5e8f7aabea870 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js @@ -0,0 +1,255 @@ +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,"module":99,"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, + "module": 99, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1712 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(A.Fragment, null, ++export const result = A.create(B.Fragment, null, + A.create("div", null)); + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-export const result = A.create(A.Fragment, null, ++export const result = A.create(B.Fragment, null, + A.create("div", null)); + + +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] *modified* +export const result = A.create(A.Fragment, null, + A.create("div", null)); + +//// [/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/moduleResolution-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js new file mode 100644 index 0000000000000..7540d427e040b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js @@ -0,0 +1,512 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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/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..03b14f1c45280 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js @@ -0,0 +1,512 @@ +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,"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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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..0c5ac002039d2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-0.js @@ -0,0 +1,511 @@ +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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..68c8cf32e9f51 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-unset-incremental-direction-1.js @@ -0,0 +1,511 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1975 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#/thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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/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/noImplicitAny-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js new file mode 100644 index 0000000000000..bc37c010dc34e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js @@ -0,0 +1,342 @@ +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,"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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1293 +} + +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/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":"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,"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": "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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1292 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): number; ++export declare function result(): any; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): number; ++export declare function result(): any; + + +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] *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,"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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1295 +} + +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..9130d975974cb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js @@ -0,0 +1,342 @@ +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,"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, + "noImplicitAny": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1295 +} + +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/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":"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,"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": "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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "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:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): number; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): number; + + +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] *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,"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, + "noImplicitAny": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1293 +} + +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..c0f8a4afa18df --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js @@ -0,0 +1,354 @@ +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,"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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1328 +} + +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/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":"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,"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": "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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1327 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): number; ++ get(): any; + }; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): number; ++ get(): any; + }; + + +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] *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,"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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1330 +} + +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..000cba3a1e1cb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js @@ -0,0 +1,354 @@ +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,"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, + "noImplicitThis": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1330 +} + +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/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":"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,"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": "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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1331 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): any; ++ get(): number; + }; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,4 @@ + export declare const result: { + value: number; +- get(): any; ++ get(): number; + }; + + +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] *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,"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, + "noImplicitThis": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1328 +} + +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-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js new file mode 100644 index 0000000000000..d585045ad1e73 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js @@ -0,0 +1,343 @@ +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,"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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1321 +} + +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/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":"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,"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": "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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1320 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number | undefined; ++export declare const result: number; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number | undefined; ++export declare const result: number; + + +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] *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,"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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1332 +} + +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..7e1a2b9a16cba --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js @@ -0,0 +1,343 @@ +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,"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, + "noUncheckedIndexedAccess": true, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1332 +} + +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/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":"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,"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": "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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1333 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number; ++export declare const result: number | undefined; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: number; ++export declare const result: number | undefined; + + +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] *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,"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, + "noUncheckedIndexedAccess": false, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1321 +} + +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..ba82031b88924 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js @@ -0,0 +1,502 @@ +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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1921 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("short").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("short").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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..114826aeb1061 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js @@ -0,0 +1,502 @@ +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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("renamed").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("renamed").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1921 +} + +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..90d4ff2f06a7a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-0.js @@ -0,0 +1,497 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1933 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("renamed").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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..36344b50cb04d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-unset-incremental-direction-1.js @@ -0,0 +1,497 @@ +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,"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": "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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1923 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("renamed").Thing; + + +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:: + + +Diff:: Changing paths without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("renamed").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1933 +} + +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/resolvePackageJsonExports-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js new file mode 100644 index 0000000000000..48ec03206db2a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js @@ -0,0 +1,397 @@ +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,"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": "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, + "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": 2019 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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] *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,"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, + "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": 2007 +} + +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..e89f91eaa8c60 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js @@ -0,0 +1,397 @@ +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,"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, + "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": 2007 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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] *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,"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": "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, + "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": 2019 +} + +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..de5664d45e149 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-0.js @@ -0,0 +1,396 @@ +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,"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, + "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": 2007 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/deep/nested/thing").Thing; ++export declare const result: import("fixture/short").Thing; + + +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] *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,"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": "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, + "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": 2019 +} + +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..1042fbcc11ec3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-unset-incremental-direction-1.js @@ -0,0 +1,396 @@ +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,"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": "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, + "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": 2019 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("fixture/short").Thing; ++export declare const result: import("fixture/deep/nested/thing").Thing; + + +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] *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,"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, + "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": 2007 +} + +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..3ebd130780d4f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js @@ -0,0 +1,502 @@ +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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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..cf5d2ec9c540f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js @@ -0,0 +1,502 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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] *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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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..17d01a092249b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-0.js @@ -0,0 +1,501 @@ +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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../external/thing").Thing; ++export declare const result: import("#thing").Thing; + + +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] *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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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..dc3cec30d3d30 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-unset-incremental-direction-1.js @@ -0,0 +1,501 @@ +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,"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": 99, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1974 +} + +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'; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 external/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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:: + + +Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("#thing").Thing; ++export declare const result: import("../external/thing").Thing; + + +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] *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,"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, + "outDir": "..", + "rootDir": "../../..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../../../external/factory.ts": [ + "../../../external/thing.ts" + ], + "../../index.ts": [ + "../../../external/factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1963 +} + +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..7af20a5a4f430 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js @@ -0,0 +1,382 @@ +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,"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, + "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": 1487 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1435 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.js'; ++export { result } from './other.ts'; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.js'; ++export { result } from './other.ts'; + + +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] *modified* +export { result } from './other.js'; + +//// [/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..90a98875b0282 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js @@ -0,0 +1,401 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../index.ts": [ + "../other.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1435 +} + +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/tsconfig.tsbuildinfo + +Found 1 error in producer/tsconfig.json:3 + +//// [/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,"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, + "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": 1487 +} + +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:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.ts'; ++export { result } from './other.js'; + + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,1 +1,1 @@ +-export { result } from './other.ts'; ++export { result } from './other.js'; + + +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] *modified* +export { result } from './other.ts'; + +//// [/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..6d5323032b809 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-0.js @@ -0,0 +1,523 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.ts").Thing; ++export declare const result: import("./thing.js").Thing; + + +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] *modified* +export declare const result: import("./thing.ts").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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..34d5831faf882 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-inferred-imports-incremental-direction-1.js @@ -0,0 +1,523 @@ +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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1954 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing.js").Thing; ++export declare const result: import("./thing.ts").Thing; + + +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] *modified* +export declare const result: import("./thing.js").Thing; + +//// [/home/src/workspaces/project/producer/dist/thing.d.ts] *rewrite with same content* +//// [/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,"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, + "outDir": "./", + "rewriteRelativeImportExtensions": false, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../thing.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1955 +} + +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..3ee872f7d5720 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js @@ -0,0 +1,407 @@ +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,"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, + "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": 1914 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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] *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,"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": "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, + "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": 1903 +} + +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..88e28314e1cb3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js @@ -0,0 +1,407 @@ +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,"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": "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, + "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": 1903 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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] *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,"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, + "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": 1914 +} + +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..41021543a73fc --- /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,"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, + "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": 1914 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./thing").Thing; ++export declare const result: import("../generated/thing").Thing; + + +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] *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,"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": "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, + "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": 1903 +} + +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..25efbf63a1759 --- /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,"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": "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, + "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": 1903 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../generated/thing").Thing; ++export declare const result: import("./thing").Thing; + + +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] *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,"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, + "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": 1914 +} + +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..ee4a021f3f6a4 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/source-edit-after-changing-stripInternal-incremental.js @@ -0,0 +1,575 @@ +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":"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":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts","emitSignatures":[[2,"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n"]]} +//// [/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": "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": false + }, + "referencedMap": { + "../b.ts": [ + "../a.ts" + ] + }, + "latestChangedDtsFile": "./a.d.ts", + "emitSignatures": [ + { + "file": "../a.ts", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", + "original": [ + 2, + "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n" + ] + } + ], + "size": 1676 +} + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +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:: 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 { +} + +//// [/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":"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": "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": "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": 1500 +} + +tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/a.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/a.ts + + +Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. +--- nonIncremental /home/src/workspaces/project/dist/b.d.ts ++++ incremental /home/src/workspaces/project/dist/b.d.ts +@@ -1,1 +1,1 @@ +-export declare const forwarded: any; ++export declare const forwarded: string; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [3]:: no change + +tsgo --project . --listEmittedFiles +ExitStatus:: Success +Output:: + +tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. +--- nonIncremental /home/src/workspaces/project/dist/b.d.ts ++++ incremental /home/src/workspaces/project/dist/b.d.ts +@@ -1,1 +1,1 @@ +-export declare const forwarded: any; ++export declare const forwarded: string; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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/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..59f8fe9febb2d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-0.js @@ -0,0 +1,336 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1273 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1288 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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..d4ea8ea910617 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-default-incremental-direction-1.js @@ -0,0 +1,335 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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/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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": "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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1261 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1273 +} + +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..1b238ffbb0ce9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js @@ -0,0 +1,338 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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/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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1275 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1287 +} + +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..6e7c7acd39822 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js @@ -0,0 +1,338 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1287 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1288 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strict without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1276 +} + +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..2f98ae5aedb08 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-0.js @@ -0,0 +1,271 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1312 +} + +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1311 +} + +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..0196ca7bb328b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-overridden-incremental-direction-1.js @@ -0,0 +1,271 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1311 +} + +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": false, + "strictNullChecks": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1312 +} + +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..1cf550e411a9d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-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 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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "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 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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1542 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: () => number; ++export declare const result: any; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: () => number; ++export declare const result: any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1551 +} + +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..14bcbe496fac3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.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 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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1551 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1552 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: () => number; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: () => number; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBindCallApply": false, + "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 [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..10f73a685a4bb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-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; };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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1506 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1505 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: any; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1520 +} + +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..64110e78cce2e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.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; };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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1520 +} + +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/tsconfig.tsbuildinfo +//// [/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1521 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: string | undefined; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: any; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictBuiltinIteratorReturn": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1506 +} + +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..d5ff631bab279 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js @@ -0,0 +1,371 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1577 +} + +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/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":"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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1576 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,8 +1,5 @@ + interface Animal { + name: string; + } +-interface Dog extends Animal { +- bark(): void; +-} +-export declare const result: Dog; ++export declare const result: Animal; + export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,8 +1,5 @@ + interface Animal { + name: string; + } +-interface Dog extends Animal { +- bark(): void; +-} +-export declare const result: Dog; ++export declare const result: Animal; + export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1627 +} + +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..61cb5de3740e7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js @@ -0,0 +1,371 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1627 +} + +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/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":"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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1628 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,5 +1,8 @@ + interface Animal { + name: string; + } +-export declare const result: Animal; ++interface Dog extends Animal { ++ bark(): void; ++} ++export declare const result: Dog; + export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,5 +1,8 @@ + interface Animal { + name: string; + } +-export declare const result: Animal; ++interface Dog extends Animal { ++ bark(): void; ++} ++export declare const result: Dog; + export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictFunctionTypes": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1577 +} + +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..99110e8f998f4 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js @@ -0,0 +1,348 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1337 +} + +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/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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1336 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string | undefined; ++export declare const result: string; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1348 +} + +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..8547f03c98c60 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js @@ -0,0 +1,348 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1348 +} + +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/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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1349 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: string; ++export declare const result: string | undefined; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "strictNullChecks": false, + "strictPropertyInitialization": false, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1337 +} + +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/typeRoots-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js new file mode 100644 index 0000000000000..272380fd7a0aa --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js @@ -0,0 +1,355 @@ +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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1565 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1564 +} + +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..ef5ac7db8059c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js @@ -0,0 +1,355 @@ +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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1564 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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,"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", + "../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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1565 +} + +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..86f782d8dc024 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js @@ -0,0 +1,361 @@ +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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1771 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1770 +} + +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..e51e9cac1f5f0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js @@ -0,0 +1,361 @@ +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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1770 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing types without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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,"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 + } + ], + "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1771 +} + +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..91707910c579e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js @@ -0,0 +1,342 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1319 +} + +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/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":"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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "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:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): unknown; ++export declare function result(): any; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): unknown; ++export declare function result(): any; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1322 +} + +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..4bc5541409735 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js @@ -0,0 +1,342 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": true + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1322 +} + +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/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":"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,"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": "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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1323 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +*refresh* /home/src/workspaces/project/producer/index.ts +Signatures:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): unknown; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare function result(): any; ++export declare function result(): unknown; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7, + "useUnknownInCatchVariables": false + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1319 +} + +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:: From c21517a2c1938ff2c9b1a3a9f69ad59ab64d8df8 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:06:40 -0700 Subject: [PATCH 02/24] Fix compiler option invalidation in incremental builds Compiler option changes can affect declaration types and diagnostics without altering source text or the dependency graph. Emit invalidation must include these options and retain their values across build-info round trips, including ordered resolution settings and strict defaults. Option-only declaration writes must also refresh shape signatures. Otherwise a later source edit can appear unchanged and leave dependent files with stale types and diagnostics. --- tools/scripts/tsc/generate-options.ts | 47 ++-- tools/scripts/tsc/options-model.ts | 2 + tools/scripts/tsc/options.test.ts | 27 ++- tools/scripts/tsc/options.ts | 51 ++++ tsc/internal/execute/incremental/buildInfo.go | 35 ++- .../incremental/buildinfo_path_test.go | 26 ++ .../execute/incremental/emitfileshandler.go | 16 +- .../incremental/snapshottobuildinfo.go | 2 +- .../execute/tsctests/readablebuildinfo.go | 4 +- .../execute/tsctests/tscbuild_test.go | 24 +- .../tsoptions/compileroptions_test.go | 72 ++++++ tsc/internal/tsoptions/options_generated.go | 87 ++++++- tsc/internal/tsoptions/rawcompileroptions.go | 6 +- ...fReferencedProjectDeclarationMaps.baseline | 20 +- ...owArbitraryExtensions-build-direction-0.js | 144 ++++------- ...owArbitraryExtensions-build-direction-1.js | 147 ++++++------ ...ImportingTsExtensions-build-direction-0.js | 144 ++--------- ...ImportingTsExtensions-build-direction-1.js | 144 ++--------- .../customConditions-build-direction-0.js | 105 ++++---- .../customConditions-build-direction-1.js | 105 ++++---- ...ustomConditions-unset-build-direction-0.js | 104 ++++---- ...ustomConditions-unset-build-direction-1.js | 104 ++++---- ...decorator-nullability-build-direction-0.js | 75 ++---- ...decorator-nullability-build-direction-1.js | 75 ++---- .../deduplicatePackages-build-direction-0.js | 149 ++---------- .../deduplicatePackages-build-direction-1.js | 15 +- .../isolatedDeclarations-build-direction-0.js | 108 +++++---- .../isolatedDeclarations-build-direction-1.js | 193 ++------------- .../isolatedModules-build-direction-0.js | 105 +++++--- .../isolatedModules-build-direction-1.js | 97 +++++--- ...es-preserveConstEnums-build-direction-0.js | 104 +++++--- ...es-preserveConstEnums-build-direction-1.js | 104 +++++--- .../jsxFactory-build-direction-0.js | 127 ++++------ .../jsxFactory-build-direction-1.js | 127 ++++------ .../jsxFragmentFactory-build-direction-0.js | 96 ++++++-- .../jsxFragmentFactory-build-direction-1.js | 96 ++++++-- .../moduleResolution-build-direction-0.js | 186 +++++++------- .../moduleResolution-build-direction-1.js | 186 +++++++------- ...oduleResolution-unset-build-direction-0.js | 181 +++++++------- ...oduleResolution-unset-build-direction-1.js | 181 +++++++------- .../noImplicitAny-build-direction-0.js | 96 ++------ .../noImplicitAny-build-direction-1.js | 96 ++------ .../noImplicitThis-build-direction-0.js | 108 ++------- .../noImplicitThis-build-direction-1.js | 108 ++------- ...ncheckedIndexedAccess-build-direction-0.js | 96 ++------ ...ncheckedIndexedAccess-build-direction-1.js | 96 ++------ .../paths-build-direction-0.js | 188 ++++++++------- .../paths-build-direction-1.js | 188 ++++++++------- .../paths-unset-build-direction-0.js | 183 +++++++------- .../paths-unset-build-direction-1.js | 183 +++++++------- ...lvePackageJsonExports-build-direction-0.js | 103 ++++---- ...lvePackageJsonExports-build-direction-1.js | 103 ++++---- ...kageJsonExports-unset-build-direction-0.js | 102 ++++---- ...kageJsonExports-unset-build-direction-1.js | 102 ++++---- ...lvePackageJsonImports-build-direction-0.js | 180 +++++++------- ...lvePackageJsonImports-build-direction-1.js | 180 +++++++------- ...kageJsonImports-unset-build-direction-0.js | 179 +++++++------- ...kageJsonImports-unset-build-direction-1.js | 179 +++++++------- ...ativeImportExtensions-build-direction-0.js | 34 +-- ...ativeImportExtensions-build-direction-1.js | 34 +-- ...ions-inferred-imports-build-direction-0.js | 144 ++--------- ...ions-inferred-imports-build-direction-1.js | 144 ++--------- .../rootDirs-build-direction-0.js | 108 ++++----- .../rootDirs-build-direction-1.js | 108 ++++----- .../rootDirs-unset-build-direction-0.js | 107 ++++----- .../rootDirs-unset-build-direction-1.js | 107 ++++----- ...edit-after-changing-stripInternal-build.js | 216 +++++------------ .../strict-build-direction-0.js | 95 ++------ .../strict-build-direction-1.js | 95 ++------ .../strict-default-build-direction-0.js | 95 ++------ .../strict-default-build-direction-1.js | 94 ++------ .../strict-overridden-build-direction-0.js | 10 +- .../strict-overridden-build-direction-1.js | 10 +- .../strictBindCallApply-build-direction-0.js | 96 ++------ .../strictBindCallApply-build-direction-1.js | 96 ++------ ...BuiltinIteratorReturn-build-direction-0.js | 96 ++------ ...BuiltinIteratorReturn-build-direction-1.js | 96 ++------ .../strictFunctionTypes-build-direction-0.js | 124 ++-------- .../strictFunctionTypes-build-direction-1.js | 118 ++------- .../strictNullChecks-build-direction-0.js | 97 ++------ .../strictNullChecks-build-direction-1.js | 97 ++------ .../typeRoots-build-direction-0.js | 117 ++++----- .../typeRoots-build-direction-1.js | 117 ++++----- .../types-build-direction-0.js | 111 +++++---- .../types-build-direction-1.js | 111 +++++---- ...knownInCatchVariables-build-direction-0.js | 96 ++------ ...knownInCatchVariables-build-direction-1.js | 96 ++------ ...-dts-generation-errors-with-incremental.js | 5 +- ...d-inferred-type-from-referenced-project.js | 22 +- ...ferenced-project-type-via-types-subpath.js | 10 +- ...absolute-non-root-dependency-is-updated.js | 18 +- ...ropertyTypes-changes-from-false-to-true.js | 226 +++++++---------- ...ropertyTypes-changes-from-true-to-false.js | 227 +++++------------- ...-references-another-project-in-monorepo.js | 15 +- ...-transitive-module-with-isolatedModules.js | 15 +- .../inferred-type-from-transitive-module.js | 15 +- ...hange-in-signature-with-isolatedModules.js | 25 +- .../with-config-with-libReplacement.js | 9 +- .../tsbuild/libraryResolution/with-config.js | 9 +- ...olution-from-d.ts-of-referenced-project.js | 10 +- ...project-correctly-with-preserveSymlinks.js | 11 +- ...-file-from-referenced-project-correctly.js | 11 +- ...t-resolution-options-referenced-project.js | 18 +- ...n-file-belongs-to-multiple-sub-projects.js | 13 +- ...-referenced-project-and-shared-is-first.js | 27 ++- ...en-root-file-is-from-referenced-project.js | 27 ++- .../transitiveReferences/builds-correctly.js | 11 +- ...es-absolute-non-root-dependency-updates.js | 19 +- .../with-config-with-libReplacement.js | 9 +- .../libraryResolution/with-config.js | 9 +- ...se-different-module-resolution-settings.js | 34 ++- .../works-with-extended-source-files.js | 3 +- ...-referenced-project-and-shared-is-first.js | 37 ++- ...en-root-file-is-from-referenced-project.js | 37 ++- ...traryExtensions-incremental-direction-0.js | 135 ++++------- ...traryExtensions-incremental-direction-1.js | 135 +++++------ ...ingTsExtensions-incremental-direction-0.js | 145 ++--------- ...ingTsExtensions-incremental-direction-1.js | 145 ++--------- ...ustomConditions-incremental-direction-0.js | 100 ++++---- ...ustomConditions-incremental-direction-1.js | 100 ++++---- ...onditions-unset-incremental-direction-0.js | 99 ++++---- ...onditions-unset-incremental-direction-1.js | 99 ++++---- ...tor-nullability-incremental-direction-0.js | 76 +++--- ...tor-nullability-incremental-direction-1.js | 76 +++--- ...plicatePackages-incremental-direction-0.js | 150 ++---------- ...plicatePackages-incremental-direction-1.js | 15 +- ...tedDeclarations-incremental-direction-0.js | 103 ++++---- ...tedDeclarations-incremental-direction-1.js | 187 ++------------- ...isolatedModules-incremental-direction-0.js | 106 +++++--- ...isolatedModules-incremental-direction-1.js | 98 +++++--- ...serveConstEnums-incremental-direction-0.js | 105 +++++--- ...serveConstEnums-incremental-direction-1.js | 105 +++++--- .../jsxFactory-incremental-direction-0.js | 122 ++++------ .../jsxFactory-incremental-direction-1.js | 122 ++++------ ...FragmentFactory-incremental-direction-0.js | 97 ++++++-- ...FragmentFactory-incremental-direction-1.js | 97 ++++++-- ...oduleResolution-incremental-direction-0.js | 174 +++++++------- ...oduleResolution-incremental-direction-1.js | 174 +++++++------- ...esolution-unset-incremental-direction-0.js | 169 +++++++------ ...esolution-unset-incremental-direction-1.js | 169 +++++++------ .../noImplicitAny-incremental-direction-0.js | 97 ++------ .../noImplicitAny-incremental-direction-1.js | 97 ++------ .../noImplicitThis-incremental-direction-0.js | 109 ++------- .../noImplicitThis-incremental-direction-1.js | 109 ++------- ...edIndexedAccess-incremental-direction-0.js | 97 ++------ ...edIndexedAccess-incremental-direction-1.js | 97 ++------ .../paths-incremental-direction-0.js | 176 +++++++------- .../paths-incremental-direction-1.js | 176 +++++++------- .../paths-unset-incremental-direction-0.js | 171 ++++++------- .../paths-unset-incremental-direction-1.js | 171 ++++++------- ...kageJsonExports-incremental-direction-0.js | 98 ++++---- ...kageJsonExports-incremental-direction-1.js | 98 ++++---- ...onExports-unset-incremental-direction-0.js | 97 ++++---- ...onExports-unset-incremental-direction-1.js | 97 ++++---- ...kageJsonImports-incremental-direction-0.js | 168 +++++++------ ...kageJsonImports-incremental-direction-1.js | 168 +++++++------ ...onImports-unset-incremental-direction-0.js | 167 +++++++------ ...onImports-unset-incremental-direction-1.js | 167 +++++++------ ...mportExtensions-incremental-direction-0.js | 36 +-- ...mportExtensions-incremental-direction-1.js | 36 +-- ...nferred-imports-incremental-direction-0.js | 145 ++--------- ...nferred-imports-incremental-direction-1.js | 145 ++--------- .../rootDirs-incremental-direction-0.js | 103 ++++---- .../rootDirs-incremental-direction-1.js | 103 ++++---- .../rootDirs-unset-incremental-direction-0.js | 102 ++++---- .../rootDirs-unset-incremental-direction-1.js | 102 ++++---- ...fter-changing-stripInternal-incremental.js | 212 +++++----------- .../strict-default-incremental-direction-0.js | 96 ++------ .../strict-default-incremental-direction-1.js | 95 ++------ .../strict-incremental-direction-0.js | 96 ++------ .../strict-incremental-direction-1.js | 96 ++------ ...rict-overridden-incremental-direction-0.js | 10 +- ...rict-overridden-incremental-direction-1.js | 10 +- ...ctBindCallApply-incremental-direction-0.js | 97 ++------ ...ctBindCallApply-incremental-direction-1.js | 97 ++------ ...nIteratorReturn-incremental-direction-0.js | 97 ++------ ...nIteratorReturn-incremental-direction-1.js | 97 ++------ ...ctFunctionTypes-incremental-direction-0.js | 125 ++-------- ...ctFunctionTypes-incremental-direction-1.js | 119 ++------- ...trictNullChecks-incremental-direction-0.js | 98 ++------ ...trictNullChecks-incremental-direction-1.js | 98 ++------ .../typeRoots-incremental-direction-0.js | 112 +++++---- .../typeRoots-incremental-direction-1.js | 112 +++++---- .../types-incremental-direction-0.js | 106 ++++---- .../types-incremental-direction-1.js | 106 ++++---- ...nCatchVariables-incremental-direction-0.js | 97 ++------ ...nCatchVariables-incremental-direction-1.js | 97 ++------ ...-dts-generation-errors-with-incremental.js | 5 +- ...ve-tagged-tuple-after-incremental-edits.js | 25 +- .../with-config-with-libReplacement.js | 9 +- .../tsc/libraryResolution/with-config.js | 9 +- .../tsc/moduleResolution/alternateResult.js | 40 +-- ...g-when-module-reference-is-not-relative.js | 11 +- ...les-tsconfig-with-extends-base-modified.js | 1 + 194 files changed, 7164 insertions(+), 11076 deletions(-) diff --git a/tools/scripts/tsc/generate-options.ts b/tools/scripts/tsc/generate-options.ts index 0ee304c803521..1ef246d033db4 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,14 +541,12 @@ 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")}`]; + return [optionValuesDiffer(goType(option), value("oldOptions"), value("newOptions"))]; }); return `func CompilerOptionsAffect${name}(oldOptions *core.CompilerOptions, newOptions *core.CompilerOptions) bool { if oldOptions == newOptions { return false } @@ -796,6 +797,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 +848,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 +857,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..ce6e2c04c1aae 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,19 @@ 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.match(source, /return \(a == nil\) == \(b == nil\) && slices.Equal\(a, b\)/); + assert.match(source, /oldOptions.GetStrictOptionValue\(oldOptions.StrictNullChecks\) != newOptions.GetStrictOptionValue\(newOptions.StrictNullChecks\)/); }); test("option section headings are detached line comments", () => { diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 0aafe5af36a28..c32de2757a605 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, }, }, { @@ -490,6 +505,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 +518,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", @@ -582,6 +603,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`."), @@ -678,6 +702,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -691,6 +716,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -753,6 +779,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 +880,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"), @@ -921,6 +951,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 +964,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 +991,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."), @@ -995,6 +1032,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 +1087,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1060,6 +1101,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1073,6 +1115,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1086,6 +1129,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", affectsSemanticDiagnostics: true, + affectsEmit: true, affectsBuildInfo: true, strictFlag: true, category: diagnostic("Type Checking"), @@ -1205,6 +1249,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 +1263,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 +1290,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..3ba3a7335a387 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,6 +557,9 @@ 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() { optionDeclaration := tsoptions.CommandLineCompilerOptionsMap.Get(option) if buildInfoDirectory == "" && optionDeclaration != nil { diff --git a/tsc/internal/execute/incremental/buildinfo_path_test.go b/tsc/internal/execute/incremental/buildinfo_path_test.go index b3d7290d8f54a..7e1e44cd64e8e 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,27 @@ 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"]}}` + 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") + 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/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/snapshottobuildinfo.go b/tsc/internal/execute/incremental/snapshottobuildinfo.go index ee592a5ee505b..f07ee1462c067 100644 --- a/tsc/internal/execute/incremental/snapshottobuildinfo.go +++ b/tsc/internal/execute/incremental/snapshottobuildinfo.go @@ -326,7 +326,7 @@ 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)) }, 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 fe3d89adc1ca2..14f7c12063451 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1049,12 +1049,8 @@ func TestBuildExactOptionalPropertyTypes(t *testing.T) { fmt.Sprintf(`"exactOptionalPropertyTypes": %t`, !exactOptionalPropertyTypes), ) }, - expectedDiff: "Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics.", - }, - { - caption: "no change", - expectedDiff: "Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics.", }, + noChange, { caption: "force rebuild with the same compiler options", commandLineArgs: []string{"--build", "consumer", "--verbose", "--force"}, @@ -1073,7 +1069,6 @@ type compilerOptionChangeTest struct { options map[string]any files FileMap roots []string - matches [2]bool } func TestBuildOptionChangeShapeSignature(t *testing.T) { @@ -1112,12 +1107,8 @@ func TestBuildOptionChangeShapeSignature(t *testing.T) { edit: func(sys *TestSys) { sys.replaceFileText("/home/src/workspaces/project/a.ts", " /** @internal */\n value = \"\";\n", "") }, - expectedDiff: "Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics.", - }, - { - caption: "no change", - expectedDiff: "Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics.", }, + noChange, {caption: "force rebuild", commandLineArgs: []string{"--build", "--verbose", "--force"}}, noChange, }, @@ -1174,10 +1165,6 @@ func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { if build { args = []string{"--build", "producer", "--verbose"} } - expectedDiff := "" - if !test.matches[direction] { - expectedDiff = "Changing " + test.option + " without editing source files leaves stale output or diagnostics." - } input := &tscInput{ subScenario: fmt.Sprintf("%s %s direction %d", name, mode, direction), cwd: project, @@ -1190,9 +1177,8 @@ func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { edit: func(sys *TestSys) { sys.writeFileNoError(configPath, config(test.values[1-direction])) }, - expectedDiff: expectedDiff, }, - {caption: "no change", expectedDiff: expectedDiff}, + noChange, { caption: "force rebuild with the same compiler options", commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}, @@ -1213,7 +1199,7 @@ func TestBuildTypeCheckingOptionChanges(t *testing.T) { {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}, matches: [2]bool{true, true}}, + {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}, @@ -1399,7 +1385,7 @@ func TestBuildResolutionOptionChanges(t *testing.T) { }, }, { - option: "deduplicatePackages", values: [2]any{false, true}, matches: [2]bool{false, true}, roots: []string{"index.ts"}, + 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"}`, diff --git a/tsc/internal/tsoptions/compileroptions_test.go b/tsc/internal/tsoptions/compileroptions_test.go index 0b6be993efada..6c4e91bc6733f 100644 --- a/tsc/internal/tsoptions/compileroptions_test.go +++ b/tsc/internal/tsoptions/compileroptions_test.go @@ -261,6 +261,78 @@ 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 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..7bb434488fe73 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,19 +374,26 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions || + return oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions || + 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.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) || oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || + oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages || oldOptions.ErasableSyntaxOnly != newOptions.ErasableSyntaxOnly || oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes || oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || + oldOptions.IsolatedModules != newOptions.IsolatedModules || oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations || oldOptions.Jsx != newOptions.Jsx || + oldOptions.JsxFactory != newOptions.JsxFactory || + oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory || oldOptions.JsxImportSource != newOptions.JsxImportSource || + oldOptions.ModuleResolution != newOptions.ModuleResolution || oldOptions.NoErrorTruncation != newOptions.NoErrorTruncation || oldOptions.NoFallthroughCasesInSwitch != newOptions.NoFallthroughCasesInSwitch || oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || @@ -396,13 +405,21 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, oldOptions.NoUnusedParameters != newOptions.NoUnusedParameters || oldOptions.NoImplicitOverride != newOptions.NoImplicitOverride || oldOptions.NoUncheckedSideEffectImports != newOptions.NoUncheckedSideEffectImports || + !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { + return (a == nil) == (b == nil) && slices.Equal(a, b) + }) || + oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || + oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || + (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) || 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.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) || + (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) || oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields || oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) || oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax || @@ -430,30 +447,57 @@ func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *cor if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies || + return oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions || + oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions || + oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies || + (oldOptions.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) || oldOptions.EmitBOM != newOptions.EmitBOM || oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || oldOptions.DeclarationDir != newOptions.DeclarationDir || + oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages || + oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes || oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || + oldOptions.IsolatedModules != newOptions.IsolatedModules || + oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations || oldOptions.ImportHelpers != newOptions.ImportHelpers || oldOptions.InlineSources != newOptions.InlineSources || oldOptions.Jsx != newOptions.Jsx || + oldOptions.JsxFactory != newOptions.JsxFactory || + oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory || oldOptions.JsxImportSource != newOptions.JsxImportSource || oldOptions.MapRoot != newOptions.MapRoot || oldOptions.Module != newOptions.Module || + oldOptions.ModuleResolution != newOptions.ModuleResolution || oldOptions.NewLine != newOptions.NewLine || + oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || + oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) || oldOptions.NoEmitHelpers != newOptions.NoEmitHelpers || + oldOptions.NoUncheckedIndexedAccess != newOptions.NoUncheckedIndexedAccess || oldOptions.NoEmitOnError != newOptions.NoEmitOnError || oldOptions.OutDir != newOptions.OutDir || + !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { + return (a == nil) == (b == nil) && slices.Equal(a, b) + }) || oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums || + oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || + oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || oldOptions.RemoveComments != newOptions.RemoveComments || + oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || oldOptions.ReactNamespace != newOptions.ReactNamespace || oldOptions.RootDir != newOptions.RootDir || + (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) || + 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.StripInternal != newOptions.StripInternal || oldOptions.SourceRoot != newOptions.SourceRoot || oldOptions.Target != newOptions.Target || oldOptions.TsBuildInfoFile != newOptions.TsBuildInfoFile || + (oldOptions.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) || + (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) || oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields || + oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) || oldOptions.VerbatimModuleSyntax != newOptions.VerbatimModuleSyntax || oldOptions.AlwaysStrict != newOptions.AlwaysStrict || oldOptions.DownlevelIteration != newOptions.DownlevelIteration || @@ -466,6 +510,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 +531,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 +555,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 +567,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 +585,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 +600,9 @@ 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.NewLine != 0 { fn(CommandLineCompilerOptionsMap.Get("newLine"), options.NewLine) } @@ -583,9 +648,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 +672,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 +717,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..154429e1a984a 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"},"referencedMap":[[3,1]],"latestChangedDtsFile":"./terminal.d.ts","resolvedRoot":[[2,5],[4,6]]} //// [/out/src.tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -91,6 +91,11 @@ function testEvaluateKeyboardEvent() { "composite": true, "declarationMap": true, "outDir": "./", + "paths": { + "common/*": [ + "./common/*" + ] + }, "tsBuildInfoFile": "./src.tsconfig.tsbuildinfo" }, "referencedMap": { @@ -109,7 +114,7 @@ function testEvaluateKeyboardEvent() { "../src/common/input/keyboard.test.ts" ] ], - "size": 1705 + "size": 1741 } //// [/out/terminal.d.ts] *new* export {}; @@ -123,7 +128,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":{"*":["../*"]}},"referencedMap":[[3,1]],"latestChangedDtsFile":"./input/keyboard.test.d.ts"} //// [/out/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -188,7 +193,12 @@ function foo() { "options": { "composite": true, "declarationMap": true, - "outDir": "./" + "outDir": "./", + "paths": { + "*": [ + "../*" + ] + } }, "referencedMap": { "../src/common/input/keyboard.test.ts": [ @@ -196,7 +206,7 @@ function foo() { ] }, "latestChangedDtsFile": "./input/keyboard.test.d.ts", - "size": 1670 + "size": 1693 } //// [/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 index e40be33e5318d..79481296297de 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-0.js @@ -76,7 +76,7 @@ declare const console: { log(msg: any): void; }; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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"} +{"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", @@ -134,10 +134,12 @@ export declare const result: any; ] ], "options": { + "allowArbitraryExtensions": false, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -167,7 +169,7 @@ export declare const result: any; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1678 + "size": 1734 } producer/tsconfig.json:: @@ -230,104 +232,12 @@ Edit [1]:: change allowArbitraryExtensions without changing source files } 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:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,1 @@ --export declare const result: { -- value: string; --}; -+export declare const result: any; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - -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:: - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,1 @@ --export declare const result: { -- value: string; --}; -+export declare const result: any; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - -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] 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'... @@ -337,7 +247,7 @@ export declare const result: { }; //// [/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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -395,10 +305,12 @@ export declare const result: { ] ], "options": { + "allowArbitraryExtensions": true, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -410,7 +322,7 @@ export declare const result: { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1443 + "size": 1498 } producer/tsconfig.json:: @@ -422,6 +334,44 @@ 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 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 index be85c23134fcc..d3343a59637dc 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowArbitraryExtensions-build-direction-1.js @@ -70,7 +70,7 @@ export declare const result: { }; //// [/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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -128,10 +128,12 @@ export declare const result: { ] ], "options": { + "allowArbitraryExtensions": true, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -143,7 +145,7 @@ export declare const result: { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1443 + "size": 1498 } producer/tsconfig.json:: @@ -193,86 +195,12 @@ Edit [1]:: change allowArbitraryExtensions without changing source files } tsgo --build producer --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:: - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,3 @@ --export declare const result: any; -+export declare const result: { -+ value: string; -+}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - -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' - - - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,3 @@ --export declare const result: any; -+export declare const result: { -+ value: string; -+}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - -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] 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'... @@ -288,7 +216,7 @@ Found 1 error in producer/index.ts:1 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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"} +{"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", @@ -346,10 +274,12 @@ export declare const result: any; ] ], "options": { + "allowArbitraryExtensions": false, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -379,7 +309,7 @@ export declare const result: any; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1678 + "size": 1734 } producer/tsconfig.json:: @@ -391,6 +321,65 @@ 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 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 index 98331de638a54..04725e3866c5a 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-0.js @@ -84,7 +84,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -171,6 +171,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -185,7 +186,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1950 + "size": 1972 } producer/tsconfig.json:: @@ -248,8 +249,11 @@ Output:: [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":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -313,11 +317,11 @@ Output:: { "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", + "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": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", "impliedNodeFormat": 99 } } @@ -336,6 +340,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -350,7 +355,7 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1949 + "size": 1971 } producer/tsconfig.json:: @@ -360,14 +365,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -383,14 +381,6 @@ Output:: -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -404,114 +394,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.ts").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1949 -} +//// [/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:: 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 index a29200c75f84f..3e1c7a0097c63 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/allowImportingTsExtensions-build-direction-1.js @@ -84,7 +84,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -171,6 +171,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -185,7 +186,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1949 + "size": 1971 } producer/tsconfig.json:: @@ -248,8 +249,11 @@ Output:: [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":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -313,11 +317,11 @@ Output:: { "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", + "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": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", "impliedNodeFormat": 99 } } @@ -336,6 +340,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -350,7 +355,7 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1950 + "size": 1972 } producer/tsconfig.json:: @@ -360,14 +365,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -383,14 +381,6 @@ Output:: -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -404,114 +394,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.js").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1950 -} +//// [/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:: 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 index 01c360c7b19a3..002a49feff4df 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-0.js @@ -81,7 +81,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -161,10 +161,12 @@ export declare const result: import("fixture/fallback").Thing; ] ], "options": { + "customConditions": [], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -179,7 +181,7 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "size": 2055 } producer/tsconfig.json:: @@ -242,62 +244,11 @@ Output:: [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:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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' - - - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -377,10 +328,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -395,9 +350,49 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "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 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 index 38dee748b0e83..48a53124f3433 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/customConditions-build-direction-1.js @@ -83,7 +83,7 @@ export declare function make(): Thing; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -163,10 +163,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -181,7 +185,7 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "size": 2062 } producer/tsconfig.json:: @@ -242,62 +246,11 @@ Output:: [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:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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' - - - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -377,10 +330,12 @@ export declare const result: import("fixture/fallback").Thing; ] ], "options": { + "customConditions": [], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -395,9 +350,49 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "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 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 index dbbf56903e764..7894cc7379a9d 100644 --- 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 @@ -80,7 +80,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -164,6 +164,7 @@ export declare const result: import("fixture/fallback").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -178,7 +179,7 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "size": 2033 } producer/tsconfig.json:: @@ -241,62 +242,11 @@ Output:: [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:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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' - - - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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] *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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -376,10 +326,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -394,9 +348,49 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "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 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 index c4bbbeebcfe00..9366ac3b02752 100644 --- 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 @@ -83,7 +83,7 @@ export declare function make(): Thing; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -163,10 +163,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -181,7 +185,7 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "size": 2062 } producer/tsconfig.json:: @@ -241,62 +245,11 @@ Output:: [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:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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' - - - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -380,6 +333,7 @@ export declare const result: import("fixture/fallback").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -394,9 +348,49 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "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 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 index 866c30f755cea..3f37003f095ab 100644 --- 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 @@ -89,7 +89,7 @@ Result = __decorate([ 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -137,6 +137,7 @@ export { Result }; "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -145,7 +146,7 @@ export { Result }; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1479 + "size": 1502 } producer/tsconfig.json:: @@ -205,8 +206,27 @@ Output:: [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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -254,6 +274,7 @@ Output:: "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -262,7 +283,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1478 + "size": 1501 } producer/tsconfig.json:: @@ -272,19 +293,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [Object]) -+ __metadata("design:paramtypes", [String]) - ], Result); - export { Result }; - - Edit [2]:: no change tsgo --build producer --verbose @@ -298,19 +306,6 @@ Output:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [Object]) -+ __metadata("design:paramtypes", [String]) - ], Result); - export { Result }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -324,25 +319,7 @@ Output:: [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] *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/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* 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 index 10209971f7b92..dbd9036e28c69 100644 --- 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 @@ -89,7 +89,7 @@ Result = __decorate([ 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -137,6 +137,7 @@ export { Result }; "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -145,7 +146,7 @@ export { Result }; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1478 + "size": 1501 } producer/tsconfig.json:: @@ -205,8 +206,27 @@ Output:: [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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -254,6 +274,7 @@ Output:: "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -262,7 +283,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1479 + "size": 1502 } producer/tsconfig.json:: @@ -272,19 +293,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [String]) -+ __metadata("design:paramtypes", [Object]) - ], Result); - export { Result }; - - Edit [2]:: no change tsgo --build producer --verbose @@ -298,19 +306,6 @@ Output:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [String]) -+ __metadata("design:paramtypes", [Object]) - ], Result); - export { Result }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -324,25 +319,7 @@ Output:: [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] *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/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* 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 index 20498cb75cc45..1502a680698b5 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-0.js @@ -85,7 +85,7 @@ declare const console: { log(msg: any): void; }; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -176,7 +176,9 @@ export declare const result: ("first" | "second")[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -195,7 +197,7 @@ export declare const result: ("first" | "second")[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2079 + "size": 2130 } producer/tsconfig.json:: @@ -256,8 +258,11 @@ Output:: [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":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -316,11 +321,11 @@ Output:: { "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", + "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": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", "impliedNodeFormat": 1 } } @@ -338,7 +343,9 @@ Output:: "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -357,22 +364,19 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1948 + "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 - - -Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"[]; -+export declare const result: ("first" | "second")[]; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -388,14 +392,6 @@ Output:: -Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"[]; -+export declare const result: ("first" | "second")[]; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -408,112 +404,9 @@ Output:: [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,"module":99,"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, - "module": 99, - "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": 1933 -} +//// [/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:: 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 index 3ec8dd968664c..97714bd7990ab 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/deduplicatePackages-build-direction-1.js @@ -85,7 +85,7 @@ declare const console: { log(msg: any): void; }; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -166,7 +166,9 @@ export declare const result: "first"[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -185,7 +187,7 @@ export declare const result: "first"[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "size": 1983 } producer/tsconfig.json:: @@ -249,7 +251,7 @@ Output:: 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -340,7 +342,9 @@ export declare const result: ("first" | "second")[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -359,11 +363,14 @@ export declare const result: ("first" | "second")[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2079 + "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 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 index e88699ebe9c1a..11f43d6591048 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-0.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,13 +110,14 @@ export declare const result: number; "declaration": true, "isolatedDeclarations": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1262 + "size": 1285 } producer/tsconfig.json:: @@ -164,7 +165,7 @@ Edit [1]:: change isolatedDeclarations without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsSkipped Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -173,8 +174,20 @@ Output:: [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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -221,13 +234,40 @@ Output:: "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": 1261 + "size": 1608 } producer/tsconfig.json:: @@ -237,52 +277,35 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,12 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsSkipped 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' +[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; +    ~~~~~~ -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,12 +0,0 @@ --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 -- +Found 1 error in producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + Edit [3]:: force rebuild with the same compiler options @@ -309,7 +332,7 @@ Output:: 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,"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]} +{"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", @@ -351,6 +374,7 @@ Found 1 error in producer/index.ts:1 "declaration": true, "isolatedDeclarations": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -388,7 +412,7 @@ Found 1 error in producer/index.ts:1 "original": 2 } ], - "size": 1448 + "size": 1471 } producer/tsconfig.json:: 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 index fddff0070ae0b..badcc18b6664a 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedDeclarations-build-direction-1.js @@ -72,7 +72,7 @@ interface Symbol { } 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,"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]} +{"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", @@ -114,6 +114,7 @@ declare const console: { log(msg: any): void; }; "declaration": true, "isolatedDeclarations": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -151,7 +152,7 @@ declare const console: { log(msg: any): void; }; "original": 2 } ], - "size": 1448 + "size": 1471 } producer/tsconfig.json:: @@ -215,7 +216,7 @@ Edit [1]:: change isolatedDeclarations without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsSkipped +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -224,20 +225,11 @@ Output:: [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/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},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"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]} +{"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", @@ -269,8 +261,13 @@ Found 1 error in producer/index.ts:1 { "fileName": "../index.ts", "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", - "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", - "impliedNodeFormat": "CommonJS" + "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": { @@ -279,44 +276,14 @@ Found 1 error in producer/index.ts:1 "declaration": true, "isolatedDeclarations": false, "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": 1449 + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 } producer/tsconfig.json:: @@ -324,79 +291,21 @@ 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 -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export declare const result: number; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,12 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsSkipped +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'... - -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 - +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export declare const result: number; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,12 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -410,65 +319,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1262 -} +//// [/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:: 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 index d6c53162290ab..0571c10021986 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-0.js @@ -71,7 +71,7 @@ export {}; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -116,14 +116,16 @@ export const result = 1 /* Value.Result */; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1340 + "size": 1387 } producer/tsconfig.json:: @@ -180,27 +182,78 @@ Output:: [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/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] *mTime changed* +//// [/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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,5 +1,1 @@ --var Value; --(function (Value) { -- Value[Value["Result"] = 1] = "Result"; --})(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [2]:: no change tsgo --build producer --verbose @@ -214,18 +267,6 @@ Output:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,5 +1,1 @@ --var Value; --(function (Value) { -- Value[Value["Result"] = 1] = "Result"; --})(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -239,13 +280,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = Value.Result; - +//// [/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* 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 index ffe04d4e7b997..df18cc3c6fa32 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/isolatedModules-build-direction-1.js @@ -75,7 +75,7 @@ var 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -120,14 +120,16 @@ export const result = Value.Result; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1340 + "size": 1386 } producer/tsconfig.json:: @@ -184,27 +186,74 @@ Output:: [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/index.js] *modified* +export const result = 1 /* Value.Result */; -//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,5 @@ --export const result = 1 /* Value.Result */; -+var Value; -+(function (Value) { -+ Value[Value["Result"] = 1] = "Result"; -+})(Value || (Value = {})); -+export const result = Value.Result; - - Edit [2]:: no change tsgo --build producer --verbose @@ -218,18 +267,6 @@ Output:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,5 @@ --export const result = 1 /* Value.Result */; -+var Value; -+(function (Value) { -+ Value[Value["Result"] = 1] = "Result"; -+})(Value || (Value = {})); -+export const result = Value.Result; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -243,9 +280,7 @@ Output:: [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] *modified* -export const result = 1 /* Value.Result */; - +//// [/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* 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 index 2b07c8e3c910e..19ee376864129 100644 --- 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 @@ -76,7 +76,7 @@ var 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,"module":99,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -121,7 +121,9 @@ export const result = 1 /* Value.Result */; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "preserveConstEnums": true, "rootDir": "..", @@ -129,7 +131,7 @@ export const result = 1 /* Value.Result */; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1366 + "size": 1413 } producer/tsconfig.json:: @@ -187,26 +189,79 @@ Output:: [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/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] *mTime changed* +//// [/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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [2]:: no change tsgo --build producer --verbose @@ -220,17 +275,6 @@ Output:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -244,13 +288,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = Value.Result; - +//// [/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* 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 index 46d2173c8eed1..e24230c3848dc 100644 --- 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 @@ -76,7 +76,7 @@ var 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,"module":99,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -121,7 +121,9 @@ export const result = Value.Result; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "preserveConstEnums": true, "rootDir": "..", @@ -129,7 +131,7 @@ export const result = Value.Result; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1366 + "size": 1412 } producer/tsconfig.json:: @@ -187,26 +189,79 @@ Output:: [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/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] *mTime changed* +//// [/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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = 1 /* Value.Result */; -+export const result = Value.Result; - - Edit [2]:: no change tsgo --build producer --verbose @@ -220,17 +275,6 @@ Output:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = 1 /* Value.Result */; -+export const result = Value.Result; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -244,13 +288,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = 1 /* Value.Result */; - +//// [/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* 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 index 6494fd1a79f22..a8a5b4a6b4ecb 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-0.js @@ -77,7 +77,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -123,14 +123,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "A.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -188,84 +190,6 @@ Output:: [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:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace B { -+declare namespace A { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- b: number; -+ a: string; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: B.JSX.Element; -+export declare const result: A.JSX.Element; - export {}; - - -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' - - - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace B { -+declare namespace A { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- b: number; -+ a: string; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: B.JSX.Element; -+export declare const result: A.JSX.Element; - export {}; - - -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] *modified* declare namespace B { function create(...args: any[]): any; @@ -282,7 +206,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -328,14 +252,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "B.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -346,6 +272,43 @@ 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 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 index 13bb8807c4ce1..36d5a31e737b5 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFactory-build-direction-1.js @@ -77,7 +77,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -123,14 +123,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "B.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -188,84 +190,6 @@ Output:: [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:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace A { -+declare namespace B { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- a: string; -+ b: number; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: A.JSX.Element; -+export declare const result: B.JSX.Element; - export {}; - - -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' - - - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace A { -+declare namespace B { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- a: string; -+ b: number; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: A.JSX.Element; -+export declare const result: B.JSX.Element; - export {}; - - -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] *modified* declare namespace A { function create(...args: any[]): any; @@ -282,7 +206,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -328,14 +252,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "A.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -346,6 +272,43 @@ 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 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 index e76208d86d127..c9c5c473e69c6 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-0.js @@ -82,7 +82,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -128,14 +128,17 @@ export const result = A.create(A.Fragment, null, "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": 1712 + "size": 1793 } producer/tsconfig.json:: @@ -194,24 +197,77 @@ Output:: [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/index.js] *modified* +export const result = A.create(B.Fragment, null, + A.create("div", null)); -//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(B.Fragment, null, -+export const result = A.create(A.Fragment, null, - A.create("div", null)); - - Edit [2]:: no change tsgo --build producer --verbose @@ -225,15 +281,6 @@ Output:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(B.Fragment, null, -+export const result = A.create(A.Fragment, null, - A.create("div", null)); - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -247,10 +294,7 @@ Output:: [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] *modified* -export const result = A.create(B.Fragment, null, - A.create("div", null)); - +//// [/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* 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 index fec690efd0c1e..52ebae570b3c0 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/jsxFragmentFactory-build-direction-1.js @@ -82,7 +82,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -128,14 +128,17 @@ export const result = A.create(B.Fragment, null, "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": 1712 + "size": 1793 } producer/tsconfig.json:: @@ -194,24 +197,77 @@ Output:: [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/index.js] *modified* +export const result = A.create(A.Fragment, null, + A.create("div", null)); -//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(A.Fragment, null, -+export const result = A.create(B.Fragment, null, - A.create("div", null)); - - Edit [2]:: no change tsgo --build producer --verbose @@ -225,15 +281,6 @@ Output:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(A.Fragment, null, -+export const result = A.create(B.Fragment, null, - A.create("div", null)); - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -247,10 +294,7 @@ Output:: [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] *modified* -export const result = A.create(A.Fragment, null, - A.create("div", null)); - +//// [/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* 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 index c07437b120db5..274e76ec8f5ed 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-0.js @@ -100,7 +100,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -182,6 +182,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -196,7 +197,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "size": 1996 } producer/tsconfig.json:: @@ -299,103 +300,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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"} +{"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", @@ -477,6 +386,7 @@ export declare const result: import("#/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -491,9 +401,93 @@ export declare const result: import("#/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1965 + "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 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 index e5689abcd1a66..c2ba7b1dd72dc 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleResolution-build-direction-1.js @@ -100,7 +100,7 @@ export declare class Thing { 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"} +{"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", @@ -182,6 +182,7 @@ export declare const result: import("#/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -196,7 +197,7 @@ export declare const result: import("#/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1965 + "size": 1987 } producer/tsconfig.json:: @@ -299,103 +300,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -477,6 +386,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -491,9 +401,93 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "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 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 index eb3fb05c569e2..72bc577e73ad3 100644 --- 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 @@ -298,103 +298,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -476,6 +384,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -490,9 +399,93 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "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 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 index b32b908ff5fb5..25189b87d7b69 100644 --- 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 @@ -100,7 +100,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -182,6 +182,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -196,7 +197,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "size": 1996 } producer/tsconfig.json:: @@ -298,98 +299,6 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *modified* export declare const result: import("#/thing").Thing; @@ -493,6 +402,90 @@ export declare const result: import("#/thing").Thing; "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 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 index 198651d7a6f6e..660a33a9e49f6 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-0.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,6 +109,7 @@ export declare function result(): any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": false, "outDir": "./", "rootDir": "..", @@ -116,7 +117,7 @@ export declare function result(): any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1293 + "size": 1316 } producer/tsconfig.json:: @@ -173,8 +174,11 @@ Output:: [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":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -206,11 +210,11 @@ Output:: { "fileName": "../index.ts", "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", - "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\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": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", "impliedNodeFormat": 1 } } @@ -220,6 +224,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": true, "outDir": "./", "rootDir": "..", @@ -227,7 +232,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1292 + "size": 1318 } producer/tsconfig.json:: @@ -235,14 +240,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): number; -+export declare function result(): any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -258,14 +256,6 @@ Output:: -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): number; -+export declare function result(): any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,65 +268,9 @@ Output:: [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,"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, - "noImplicitAny": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1295 -} +//// [/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:: 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 index 98039c755118d..5c3eb994673f2 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitAny-build-direction-1.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,6 +109,7 @@ export declare function result(): number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": true, "outDir": "./", "rootDir": "..", @@ -116,7 +117,7 @@ export declare function result(): number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1295 + "size": 1318 } producer/tsconfig.json:: @@ -173,8 +174,11 @@ Output:: [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":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -206,11 +210,11 @@ Output:: { "fileName": "../index.ts", "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", - "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\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": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", "impliedNodeFormat": 1 } } @@ -220,6 +224,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": false, "outDir": "./", "rootDir": "..", @@ -227,7 +232,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1296 + "size": 1316 } producer/tsconfig.json:: @@ -235,14 +240,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -258,14 +256,6 @@ Output:: -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,65 +268,9 @@ Output:: [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,"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, - "noImplicitAny": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1293 -} +//// [/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:: 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 index 955acee3a96d6..de20de52ab69b 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-0.js @@ -66,7 +66,7 @@ export declare const 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":"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,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,6 +112,7 @@ export declare const result: { "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": false, "outDir": "./", "rootDir": "..", @@ -119,7 +120,7 @@ export declare const result: { "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1328 + "size": 1351 } producer/tsconfig.json:: @@ -176,8 +177,14 @@ Output:: [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":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -209,11 +216,11 @@ Output:: { "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", + "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": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", "impliedNodeFormat": 1 } } @@ -223,6 +230,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": true, "outDir": "./", "rootDir": "..", @@ -230,7 +238,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1327 + "size": 1353 } producer/tsconfig.json:: @@ -238,17 +246,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): number; -+ get(): any; - }; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -264,17 +262,6 @@ Output:: -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): number; -+ get(): any; - }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -287,68 +274,9 @@ Output:: [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,"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, - "noImplicitThis": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1330 -} +//// [/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:: 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 index cfee4768369e7..bee308e41444d 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noImplicitThis-build-direction-1.js @@ -66,7 +66,7 @@ export declare const 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":"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,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,6 +112,7 @@ export declare const result: { "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": true, "outDir": "./", "rootDir": "..", @@ -119,7 +120,7 @@ export declare const result: { "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1330 + "size": 1353 } producer/tsconfig.json:: @@ -176,8 +177,14 @@ Output:: [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":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -209,11 +216,11 @@ Output:: { "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", + "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": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", "impliedNodeFormat": 1 } } @@ -223,6 +230,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": false, "outDir": "./", "rootDir": "..", @@ -230,7 +238,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1331 + "size": 1351 } producer/tsconfig.json:: @@ -238,17 +246,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): any; -+ get(): number; - }; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -264,17 +262,6 @@ Output:: -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): any; -+ get(): number; - }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -287,68 +274,9 @@ Output:: [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,"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, - "noImplicitThis": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1328 -} +//// [/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:: 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 index 7b4a1d37bc784..29057cdc94f21 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-0.js @@ -64,7 +64,7 @@ declare const console: { log(msg: any): void; }; 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,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,6 +110,7 @@ export declare const result: number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": false, "outDir": "./", "rootDir": "..", @@ -117,7 +118,7 @@ export declare const result: number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1321 + "size": 1344 } producer/tsconfig.json:: @@ -174,8 +175,11 @@ Output:: [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":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -207,11 +211,11 @@ Output:: { "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", + "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": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", "impliedNodeFormat": 1 } } @@ -221,6 +225,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": true, "outDir": "./", "rootDir": "..", @@ -228,7 +233,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1320 + "size": 1355 } producer/tsconfig.json:: @@ -236,14 +241,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number | undefined; -+export declare const result: number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -259,14 +257,6 @@ Output:: -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number | undefined; -+export declare const result: number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -279,65 +269,9 @@ Output:: [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,"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, - "noUncheckedIndexedAccess": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1332 -} +//// [/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:: 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 index 27725e72aedc7..7fc99e25efa14 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noUncheckedIndexedAccess-build-direction-1.js @@ -64,7 +64,7 @@ declare const console: { log(msg: any): void; }; 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,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,6 +110,7 @@ export declare const result: number | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": true, "outDir": "./", "rootDir": "..", @@ -117,7 +118,7 @@ export declare const result: number | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1332 + "size": 1355 } producer/tsconfig.json:: @@ -174,8 +175,11 @@ Output:: [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":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -207,11 +211,11 @@ Output:: { "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", + "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": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", "impliedNodeFormat": 1 } } @@ -221,6 +225,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": false, "outDir": "./", "rootDir": "..", @@ -228,7 +233,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1333 + "size": 1344 } producer/tsconfig.json:: @@ -236,14 +241,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number; -+export declare const result: number | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -259,14 +257,6 @@ Output:: -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number; -+export declare const result: number | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -279,65 +269,9 @@ Output:: [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,"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, - "noUncheckedIndexedAccess": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1321 -} +//// [/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:: 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 index d3d82ea44efd4..4ffd55a52ec03 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js @@ -101,7 +101,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -180,7 +180,13 @@ export declare const result: import("short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -194,7 +200,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1921 + "size": 1987 } producer/tsconfig.json:: @@ -298,99 +304,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("short").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("short").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -469,7 +387,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -483,9 +407,89 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } +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 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 index 69744e4260187..788d2a3aef2d2 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js @@ -101,7 +101,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -180,7 +180,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -194,7 +200,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } producer/tsconfig.json:: @@ -298,99 +304,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("renamed").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("renamed").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -469,7 +387,13 @@ export declare const result: import("short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -483,9 +407,89 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1921 + "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. + +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 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 index fc1af1e406ccb..c520d85afad24 100644 --- 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 @@ -96,7 +96,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -175,6 +175,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -189,7 +190,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "size": 1956 } producer/tsconfig.json:: @@ -293,99 +294,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -464,7 +377,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -478,9 +397,89 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } +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 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 index 93ec57d3d8062..0bec12e8f2f90 100644 --- 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 @@ -101,7 +101,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -180,7 +180,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -194,7 +200,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } producer/tsconfig.json:: @@ -293,99 +299,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("renamed").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("renamed").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -464,6 +382,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -478,9 +397,89 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "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 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 index ae73743236cfe..9eb9883b7ead9 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-0.js @@ -78,7 +78,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -162,7 +162,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -176,7 +178,7 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "size": 2076 } producer/tsconfig.json:: @@ -237,62 +239,11 @@ Output:: [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:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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' - - - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -376,7 +327,9 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": true, "rootDir": "..", "strict": true, "target": 7 @@ -390,9 +343,49 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "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 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 index 76ed070c1dc7b..0b6c52819766d 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonExports-build-direction-1.js @@ -78,7 +78,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -162,7 +162,9 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": true, "rootDir": "..", "strict": true, "target": 7 @@ -176,7 +178,7 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "size": 2063 } producer/tsconfig.json:: @@ -237,62 +239,11 @@ Output:: [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:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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' - - - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -376,7 +327,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -390,9 +343,49 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "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 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 index b7924cbd92a37..fb9097bedc58e 100644 --- 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 @@ -77,7 +77,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -161,6 +161,7 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -175,7 +176,7 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "size": 2030 } producer/tsconfig.json:: @@ -236,62 +237,11 @@ Output:: [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:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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' - - - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -375,7 +325,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -389,9 +341,49 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "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 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 index f0ca3f0c9f4f9..3b8af8616cd62 100644 --- 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 @@ -78,7 +78,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -162,7 +162,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -176,7 +178,7 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "size": 2076 } producer/tsconfig.json:: @@ -236,62 +238,11 @@ Output:: [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:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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' - - - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -375,6 +326,7 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -389,9 +341,49 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "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 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 index 33f6e2d85f240..bec6fb145373d 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-0.js @@ -99,7 +99,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -181,7 +181,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -195,7 +197,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "size": 2031 } producer/tsconfig.json:: @@ -295,99 +297,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -469,7 +383,9 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": true, "rootDir": "../../..", "strict": true, "target": 7 @@ -483,9 +399,89 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "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 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 index 39a74af5d9640..1fb2398799aa4 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/resolvePackageJsonImports-build-direction-1.js @@ -99,7 +99,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -181,7 +181,9 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": true, "rootDir": "../../..", "strict": true, "target": 7 @@ -195,7 +197,7 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "size": 2019 } producer/tsconfig.json:: @@ -295,99 +297,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -469,7 +383,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -483,9 +399,89 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "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 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 index 5b74f8eb7e943..2efcd44cc0e90 100644 --- 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 @@ -98,7 +98,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -180,6 +180,7 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -194,7 +195,7 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "size": 1986 } producer/tsconfig.json:: @@ -294,99 +295,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -468,7 +381,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -482,9 +397,89 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "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 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 index 02f91d5e1c790..222fb6c9eb51f 100644 --- 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 @@ -99,7 +99,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -181,7 +181,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -195,7 +197,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "size": 2031 } producer/tsconfig.json:: @@ -294,99 +296,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -468,6 +382,7 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -482,9 +397,89 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "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 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 index c59848999fdc9..2026dc5fcc870 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-0.js @@ -85,7 +85,7 @@ export declare const result = 1; 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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -149,6 +149,7 @@ export const result = 1; "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -166,7 +167,7 @@ export const result = 1; "../index.ts" ], "latestChangedDtsFile": "./index.d.ts", - "size": 1487 + "size": 1510 } producer/tsconfig.json:: @@ -242,8 +243,12 @@ Output:: [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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -306,6 +311,7 @@ Output:: "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -318,7 +324,7 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1435 + "size": 1458 } producer/tsconfig.json:: @@ -329,14 +335,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.js'; -+export { result } from './other.ts'; - - Edit [2]:: no change tsgo --build producer --verbose @@ -350,14 +348,6 @@ Output:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.js'; -+export { result } from './other.ts'; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -371,9 +361,7 @@ Output:: [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] *modified* -export { result } from './other.js'; - +//// [/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* 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 index aee363edfb332..cd9bf52ec6e72 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rewriteRelativeImportExtensions-build-direction-1.js @@ -77,7 +77,7 @@ export declare const result = 1; 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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -140,6 +140,7 @@ export const result = 1; "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -152,7 +153,7 @@ export const result = 1; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1435 + "size": 1458 } producer/tsconfig.json:: @@ -220,8 +221,12 @@ Output:: 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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -285,6 +290,7 @@ Found 1 error in producer/tsconfig.json:3 "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -302,7 +308,7 @@ Found 1 error in producer/tsconfig.json:3 "../index.ts" ], "latestChangedDtsFile": "./index.d.ts", - "size": 1487 + "size": 1510 } producer/tsconfig.json:: @@ -313,14 +319,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.ts'; -+export { result } from './other.js'; - - Edit [2]:: no change tsgo --build producer --verbose @@ -350,14 +348,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.ts'; -+export { result } from './other.js'; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -379,9 +369,7 @@ Output:: 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] *modified* -export { result } from './other.ts'; - +//// [/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* 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 index 510bcb6bac2fd..62dba3d7e9b80 100644 --- 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 @@ -84,7 +84,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -170,6 +170,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -185,7 +186,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1955 + "size": 1977 } producer/tsconfig.json:: @@ -248,8 +249,11 @@ Output:: [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":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -313,11 +317,11 @@ Output:: { "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", + "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": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", "impliedNodeFormat": 99 } } @@ -335,6 +339,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -350,7 +355,7 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1954 + "size": 1976 } producer/tsconfig.json:: @@ -360,14 +365,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -383,14 +381,6 @@ Output:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -404,114 +394,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.ts").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rewriteRelativeImportExtensions": true, - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1954 -} +//// [/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:: 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 index 3ed7fcbb12499..5e9080aa179fd 100644 --- 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 @@ -84,7 +84,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -170,6 +170,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -185,7 +186,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1954 + "size": 1976 } producer/tsconfig.json:: @@ -248,8 +249,11 @@ Output:: [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":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -313,11 +317,11 @@ Output:: { "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", + "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": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", "impliedNodeFormat": 99 } } @@ -335,6 +339,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -350,7 +355,7 @@ Output:: ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1955 + "size": 1977 } producer/tsconfig.json:: @@ -360,14 +365,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -383,14 +381,6 @@ Output:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -404,114 +394,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.js").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rewriteRelativeImportExtensions": false, - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1955 -} +//// [/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:: 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 index af8305b7a4d1a..7e214f870b18b 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-0.js @@ -82,7 +82,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -165,8 +165,10 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [], "strict": true, "target": 7 }, @@ -179,7 +181,7 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "size": 1951 } producer/tsconfig.json:: @@ -245,63 +247,11 @@ Output:: [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:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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' - - - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -384,8 +334,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -398,9 +353,50 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "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 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 index 10b6bdbec4c52..5856788e0f121 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/rootDirs-build-direction-1.js @@ -85,7 +85,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -168,8 +168,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -182,7 +187,7 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "size": 1963 } producer/tsconfig.json:: @@ -245,63 +250,11 @@ Output:: [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:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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' - - - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -384,8 +337,10 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [], "strict": true, "target": 7 }, @@ -398,9 +353,50 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "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 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 index 332b6a0ddb02d..a7dbb0c97b1ca 100644 --- 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 @@ -81,7 +81,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -164,6 +164,7 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -178,7 +179,7 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "size": 1937 } producer/tsconfig.json:: @@ -244,63 +245,11 @@ Output:: [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:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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' - - - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -383,8 +332,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -397,9 +351,50 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "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 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 index a5df7b4802270..e4f2392add815 100644 --- 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 @@ -85,7 +85,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -168,8 +168,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -182,7 +187,7 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "size": 1963 } producer/tsconfig.json:: @@ -244,63 +249,11 @@ Output:: [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:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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' - - - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -383,6 +336,7 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -397,9 +351,50 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "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 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 index 855a4f06df6b8..476fe37b9bc40 100644 --- 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 @@ -179,7 +179,7 @@ export declare class Result { } //// [/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":"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":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts","emitSignatures":[[2,"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n"]]} +{"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", @@ -216,11 +216,11 @@ export declare class Result { { "fileName": "../a.ts", "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", - "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\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": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", "impliedNodeFormat": 1 } }, @@ -255,22 +255,13 @@ export declare class Result { ] }, "latestChangedDtsFile": "./a.d.ts", - "emitSignatures": [ - { - "file": "../a.ts", - "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", - "original": [ - 2, - "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n" - ] - } - ], - "size": 1676 + "size": 1583 } tsconfig.json:: SemanticDiagnostics:: Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts Edit [1]:: no change @@ -293,7 +284,7 @@ export class Result { tsgo --build --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * tsconfig.json @@ -302,12 +293,23 @@ Output:: [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":"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"} +{"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", @@ -355,11 +357,11 @@ export declare class Result { { "fileName": "../b.ts", "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", - "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\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": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", "impliedNodeFormat": 1 } } @@ -382,65 +384,62 @@ export declare class Result { "../a.ts" ] }, - "latestChangedDtsFile": "./a.d.ts", - "size": 1500 + "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 -Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. ---- nonIncremental /home/src/workspaces/project/dist/b.d.ts -+++ incremental /home/src/workspaces/project/dist/b.d.ts -@@ -1,1 +1,1 @@ --export declare const forwarded: any; -+export declare const forwarded: string; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: no change tsgo --build --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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 'a.ts' is older than output 'dist/tsconfig.tsbuildinfo' +[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:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. ---- nonIncremental /home/src/workspaces/project/dist/b.d.ts -+++ incremental /home/src/workspaces/project/dist/b.d.ts -@@ -1,1 +1,1 @@ --export declare const forwarded: any; -+export declare const forwarded: string; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [4]:: force rebuild @@ -463,106 +462,9 @@ Output:: 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] *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 -} +//// [/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:: 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 index d33c899a2f459..734f32c870357 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-0.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,13 +109,14 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1276 + "size": 1299 } producer/tsconfig.json:: @@ -171,8 +172,11 @@ Output:: [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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -204,11 +208,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -218,13 +222,14 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1275 + "size": 1310 } producer/tsconfig.json:: @@ -232,14 +237,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -255,14 +253,6 @@ Output:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -275,64 +265,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1287 -} +//// [/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:: 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 index a3ef0d873eb39..876d6baa3eaca 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strict-build-direction-1.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,13 +109,14 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1287 + "size": 1310 } producer/tsconfig.json:: @@ -171,8 +172,11 @@ Output:: [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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -204,11 +208,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -218,13 +222,14 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1288 + "size": 1299 } producer/tsconfig.json:: @@ -232,14 +237,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -255,14 +253,6 @@ Output:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -275,64 +265,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1276 -} +//// [/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:: 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 index fe92fb74431ab..b17ca0750cb16 100644 --- 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 @@ -62,7 +62,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -108,12 +108,13 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1273 + "size": 1296 } producer/tsconfig.json:: @@ -169,8 +170,11 @@ Output:: [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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -202,11 +206,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -216,13 +220,14 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1288 + "size": 1299 } producer/tsconfig.json:: @@ -230,14 +235,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -253,14 +251,6 @@ Output:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -273,64 +263,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1276 -} +//// [/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:: 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 index 87cf3cdfac112..8044183d8b116 100644 --- 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 @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,13 +109,14 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1276 + "size": 1299 } producer/tsconfig.json:: @@ -170,8 +171,11 @@ Output:: [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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -203,11 +207,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -217,12 +221,13 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1261 + "size": 1296 } producer/tsconfig.json:: @@ -230,14 +235,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -253,14 +251,6 @@ Output:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -273,63 +263,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1273 -} +//// [/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:: 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 index c3d9ead786693..ee6b8dfd140e7 100644 --- 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 @@ -64,7 +64,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,6 +110,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, @@ -117,7 +118,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1312 + "size": 1335 } producer/tsconfig.json:: @@ -175,7 +176,7 @@ Output:: [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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -221,6 +222,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -228,7 +230,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1311 + "size": 1334 } producer/tsconfig.json:: 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 index cf644f9a3de66..39b2eefffa829 100644 --- 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 @@ -64,7 +64,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,6 +110,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -117,7 +118,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1311 + "size": 1334 } producer/tsconfig.json:: @@ -175,7 +176,7 @@ Output:: [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,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -221,6 +222,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, @@ -228,7 +230,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1312 + "size": 1335 } producer/tsconfig.json:: 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 index 27718b20bf2cf..aef5332d780ac 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-0.js @@ -67,7 +67,7 @@ Output:: 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,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -113,6 +113,7 @@ export declare const result: any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -120,7 +121,7 @@ export declare const result: any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1543 + "size": 1566 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "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", + "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": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -231,7 +236,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1542 + "size": 1574 } producer/tsconfig.json:: @@ -239,14 +244,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: () => number; -+export declare const result: any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -262,14 +260,6 @@ Output:: -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: () => number; -+export declare const result: any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -282,65 +272,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBindCallApply": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1551 -} +//// [/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:: 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 index 72e063928c363..eb2c7325e2ad3 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBindCallApply-build-direction-1.js @@ -67,7 +67,7 @@ Output:: 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,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -113,6 +113,7 @@ export declare const result: () => number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -120,7 +121,7 @@ export declare const result: () => number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1551 + "size": 1574 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "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", + "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": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -231,7 +236,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1552 + "size": 1566 } producer/tsconfig.json:: @@ -239,14 +244,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: () => number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -262,14 +260,6 @@ Output:: -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: () => number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -282,65 +272,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBindCallApply": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1543 -} +//// [/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:: 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 index 2b508101df697..04f6a55a25b87 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-0.js @@ -67,7 +67,7 @@ Output:: 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,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -113,6 +113,7 @@ export declare const result: any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -120,7 +121,7 @@ export declare const result: any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1506 + "size": 1529 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "fileName": "../index.ts", "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\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": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -231,7 +236,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1505 + "size": 1543 } producer/tsconfig.json:: @@ -239,14 +244,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -262,14 +260,6 @@ Output:: -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -282,65 +272,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBuiltinIteratorReturn": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1520 -} +//// [/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:: 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 index 7c4709424c986..89439febc0296 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictBuiltinIteratorReturn-build-direction-1.js @@ -67,7 +67,7 @@ Output:: 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,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -113,6 +113,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -120,7 +121,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1520 + "size": 1543 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "fileName": "../index.ts", "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": "CommonJS", "original": { "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -231,7 +236,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1521 + "size": 1529 } producer/tsconfig.json:: @@ -239,14 +244,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -262,14 +260,6 @@ Output:: -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -282,65 +272,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBuiltinIteratorReturn": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1506 -} +//// [/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:: 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 index 490bfb93b4226..bd52361ef6948 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-0.js @@ -71,7 +71,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -117,6 +117,7 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -124,7 +125,7 @@ export {}; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1577 + "size": 1600 } producer/tsconfig.json:: @@ -181,8 +182,18 @@ Output:: [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":"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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -214,11 +225,11 @@ Output:: { "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", + "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": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "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 } } @@ -228,6 +239,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -235,7 +247,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1576 + "size": 1650 } producer/tsconfig.json:: @@ -243,21 +255,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,8 +1,5 @@ - interface Animal { - name: string; - } --interface Dog extends Animal { -- bark(): void; --} --export declare const result: Dog; -+export declare const result: Animal; - export {}; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -273,21 +271,6 @@ Output:: -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,8 +1,5 @@ - interface Animal { - name: string; - } --interface Dog extends Animal { -- bark(): void; --} --export declare const result: Dog; -+export declare const result: Animal; - export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -300,72 +283,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictFunctionTypes": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1627 -} +//// [/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:: 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 index 76b6aa7c7b796..bd4dc912f5216 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictFunctionTypes-build-direction-1.js @@ -74,7 +74,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -120,6 +120,7 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -127,7 +128,7 @@ export {}; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1627 + "size": 1650 } producer/tsconfig.json:: @@ -184,8 +185,15 @@ Output:: [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":"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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -217,11 +225,11 @@ Output:: { "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", + "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": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", "impliedNodeFormat": 1 } } @@ -231,6 +239,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -238,7 +247,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1628 + "size": 1600 } producer/tsconfig.json:: @@ -246,21 +255,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,5 +1,8 @@ - interface Animal { - name: string; - } --export declare const result: Animal; -+interface Dog extends Animal { -+ bark(): void; -+} -+export declare const result: Dog; - export {}; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -276,21 +271,6 @@ Output:: -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,5 +1,8 @@ - interface Animal { - name: string; - } --export declare const result: Animal; -+interface Dog extends Animal { -+ bark(): void; -+} -+export declare const result: Dog; - export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -303,69 +283,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictFunctionTypes": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1577 -} +//// [/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:: 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 index 96d780259f46c..e65c37d50ee5c 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-0.js @@ -65,7 +65,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -111,6 +111,7 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -119,7 +120,7 @@ export declare const result: string; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1337 + "size": 1360 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -232,7 +237,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1336 + "size": 1371 } producer/tsconfig.json:: @@ -240,14 +245,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -263,14 +261,6 @@ Output:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -283,66 +273,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictNullChecks": true, - "strictPropertyInitialization": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1348 -} +//// [/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:: 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 index 5ffe27699990e..d3b84ad448998 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/strictNullChecks-build-direction-1.js @@ -65,7 +65,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -111,6 +111,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -119,7 +120,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1348 + "size": 1371 } producer/tsconfig.json:: @@ -177,8 +178,11 @@ Output:: [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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -210,11 +214,11 @@ Output:: { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -224,6 +228,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -232,7 +237,7 @@ Output:: "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1349 + "size": 1360 } producer/tsconfig.json:: @@ -240,14 +245,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -263,14 +261,6 @@ Output:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -283,66 +273,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictNullChecks": false, - "strictPropertyInitialization": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1337 -} +//// [/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:: 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 index 3752c606edf03..454448cca93e7 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js @@ -75,7 +75,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -147,13 +147,21 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1565 + "size": 1642 } producer/tsconfig.json:: @@ -218,61 +226,11 @@ Output:: [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:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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' - - - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -344,13 +302,21 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1564 + "size": 1641 } producer/tsconfig.json:: @@ -363,6 +329,45 @@ 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 +*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 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 index 0aa07e7655086..bf40154383082 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js @@ -75,7 +75,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -147,13 +147,21 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1564 + "size": 1641 } producer/tsconfig.json:: @@ -218,61 +226,11 @@ Output:: [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:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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' - - - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -344,13 +302,21 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1565 + "size": 1642 } producer/tsconfig.json:: @@ -363,6 +329,45 @@ 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 +*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 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 index c1def93d5977e..72168a7f27bc1 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js @@ -72,7 +72,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -150,13 +150,18 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "first", + "second" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1771 + "size": 1821 } producer/tsconfig.json:: @@ -218,61 +223,11 @@ Output:: [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:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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' - - - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -350,13 +305,18 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "second", + "first" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1770 + "size": 1820 } producer/tsconfig.json:: @@ -369,6 +329,45 @@ 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 +*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 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 index 9029f65d20ae1..95a9809e44e96 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js @@ -72,7 +72,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -150,13 +150,18 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "second", + "first" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1770 + "size": 1820 } producer/tsconfig.json:: @@ -218,61 +223,11 @@ Output:: [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:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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' - - - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -350,13 +305,18 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "first", + "second" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1771 + "size": 1821 } producer/tsconfig.json:: @@ -369,6 +329,45 @@ 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 +*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 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 index 899263136fba8..520691b6e5969 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-0.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,6 +109,7 @@ export declare function result(): any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -116,7 +117,7 @@ export declare function result(): any; "useUnknownInCatchVariables": false }, "latestChangedDtsFile": "./index.d.ts", - "size": 1319 + "size": 1342 } producer/tsconfig.json:: @@ -173,8 +174,11 @@ Output:: [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":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -206,11 +210,11 @@ Output:: { "fileName": "../index.ts", "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", - "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\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": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", "impliedNodeFormat": 1 } } @@ -220,6 +224,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -227,7 +232,7 @@ Output:: "useUnknownInCatchVariables": true }, "latestChangedDtsFile": "./index.d.ts", - "size": 1318 + "size": 1345 } producer/tsconfig.json:: @@ -235,14 +240,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): unknown; -+export declare function result(): any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -258,14 +256,6 @@ Output:: -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): unknown; -+export declare function result(): any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,65 +268,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7, - "useUnknownInCatchVariables": true - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1322 -} +//// [/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:: 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 index 0479765fa6697..509c7627154ca 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/useUnknownInCatchVariables-build-direction-1.js @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,6 +109,7 @@ export declare function result(): unknown; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -116,7 +117,7 @@ export declare function result(): unknown; "useUnknownInCatchVariables": true }, "latestChangedDtsFile": "./index.d.ts", - "size": 1322 + "size": 1345 } producer/tsconfig.json:: @@ -173,8 +174,11 @@ Output:: [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":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -206,11 +210,11 @@ Output:: { "fileName": "../index.ts", "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", - "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\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": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", "impliedNodeFormat": 1 } } @@ -220,6 +224,7 @@ Output:: "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -227,7 +232,7 @@ Output:: "useUnknownInCatchVariables": false }, "latestChangedDtsFile": "./index.d.ts", - "size": 1323 + "size": 1342 } producer/tsconfig.json:: @@ -235,14 +240,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): unknown; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -258,14 +256,6 @@ Output:: -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): unknown; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,65 +268,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7, - "useUnknownInCatchVariables": false - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1319 -} +//// [/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:: 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..f51fa855598b7 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"]}},"latestChangedDtsFile":"./src/index.d.ts"} //// [/home/src/workspaces/project/packages/pkg1/lib/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -128,10 +128,15 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@fluentui/*": [ + "./packages/*/src" + ] + } }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1274 + "size": 1319 } //// [/home/src/workspaces/project/packages/pkg2/lib/src/index.d.ts] *new* export declare function fn4(): import("@fluentui/pkg1").IThing; @@ -143,7 +148,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"]}},"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 +203,12 @@ export function fn4() { ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@fluentui/*": [ + "./packages/*/src" + ] + } }, "referencedMap": { "../src/index.ts": [ @@ -206,7 +216,7 @@ export function fn4() { ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1496 + "size": 1541 } 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..a792de135b5a7 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},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -116,6 +116,11 @@ export const value = myValue; "options": { "composite": true, "outDir": "./", + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, "strict": true }, "referencedMap": { @@ -124,7 +129,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1347 + "size": 1393 } tsconfig.json:: @@ -160,7 +165,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},"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,6 +221,11 @@ Found 1 error in src/index.ts:2 "options": { "composite": true, "outDir": "./", + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, "strict": true }, "referencedMap": { @@ -242,7 +252,7 @@ Found 1 error in src/index.ts:2 ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1518 + "size": 1564 } 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 index 92abfd98d5b2a..9c29e7b0a8ce1 100644 --- 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 @@ -239,157 +239,17 @@ Edit [0]:: toggle exactOptionalPropertyTypes without changing source files } 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 up to date with .d.ts files from its dependencies - -[HH:MM:SS AM] Updating output timestamps of project 'consumer/tsconfig.json'... - -//// [/home/src/workspaces/project/consumer/dist/tsconfig.tsbuildinfo] *mTime changed* -//// [/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":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": "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": true, - "module": 99, - "outDir": "./", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1312 -} - -producer/tsconfig.json:: -SemanticDiagnostics:: -*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts -*refresh* /home/src/workspaces/project/producer/index.ts -Signatures:: - - -Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,3 @@ - export declare const result: { -- value?: string; -+ value?: string | undefined; - }; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,10 +0,0 @@ --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 -- - -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' - - - - -Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,3 @@ - export declare const result: { -- value?: string; -+ value?: string | undefined; - }; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,10 +0,0 @@ --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 -- - -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] 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 being forcibly rebuilt +[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'... @@ -403,7 +263,6 @@ Output:: 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] *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* @@ -583,6 +442,87 @@ SemanticDiagnostics:: 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 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 index 9f08247c15f6e..c2ecd5c610254 100644 --- 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 @@ -292,7 +292,7 @@ Edit [0]:: toggle exactOptionalPropertyTypes without changing source files } tsgo --build consumer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -306,175 +306,6 @@ Output:: [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/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":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": "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": false, - "module": 99, - "outDir": "./", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1301 -} - -producer/tsconfig.json:: -SemanticDiagnostics:: -*refresh* /home/src/tslibs/TS/Lib/lib.es5.d.ts -*refresh* /home/src/workspaces/project/producer/index.ts -Signatures:: - -consumer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,3 @@ - export declare const result: { -- value?: string | undefined; -+ value?: string; - }; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,10 @@ -+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 -+ - -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:: - - -Diff:: Changing exactOptionalPropertyTypes without editing source files leaves stale declarations and downstream diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,3 @@ - export declare const result: { -- value?: string | undefined; -+ value?: string; - }; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,10 @@ -+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 -+ - -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] *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* @@ -611,6 +442,62 @@ SemanticDiagnostics:: 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 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..40c961e8299db 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -256,6 +256,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); "options": { "composite": true, "module": 199, + "moduleResolution": 99, + "paths": { + "@common": [ + "../common.d.ts" + ] + }, "strict": true }, "referencedMap": { @@ -268,7 +274,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1713 + "size": 1774 } 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..f162382e4f07d 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"]}},"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,12 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "const": [ + "./const" + ] + } }, "referencedMap": { "../index.ts": [ @@ -232,7 +237,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1411 + "size": 1441 } 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..39259b252270c 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"]}},"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,12 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "const": [ + "./const" + ] + } }, "referencedMap": { "../index.ts": [ @@ -230,7 +235,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1411 + "size": 1441 } 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..2f2516cfd4eac 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,"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,14 @@ export declare const platform: "native"; ] ], "options": { + "customConditions": [ + "react-native" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "strict": true }, @@ -221,10 +225,10 @@ export declare const platform: "native"; ] }, "latestChangedDtsFile": "./src/util.d.ts", - "size": 1766 + "size": 1825 } //// [/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 +315,7 @@ export declare const platform: "native"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "strict": true }, @@ -337,7 +342,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..3bccfc829a3c2 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":"../../.."},"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,6 +205,11 @@ export {}; "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -227,7 +232,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1791 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -424,7 +429,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":"../../.."},"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,6 +508,11 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -525,7 +535,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1821 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -691,7 +701,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":"../../.."},"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,6 +771,11 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -779,7 +794,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1603 + "size": 1654 } //// [/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..0d7f16fd6fb45 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":"../../.."},"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,6 +205,11 @@ export {}; "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -227,7 +232,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1791 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -424,7 +429,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":"../../.."},"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,6 +508,11 @@ projects/shared/dist/src/random.d.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -525,7 +535,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1821 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -691,7 +701,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":"../../.."},"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,6 +771,11 @@ projects/shared/dist/src/logging.d.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -779,7 +794,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1603 + "size": 1654 } //// [/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/transitiveReferences/builds-correctly.js b/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js index 5cfd7df738c63..ee4953ad93a70 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/*":["./*"]}},"referencedMap":[[3,1]],"latestChangedDtsFile":"./b.d.ts"} //// [/user/username/projects/transitiveReferences/tsconfig.b.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -204,7 +204,12 @@ X; ] ], "options": { - "composite": true + "composite": true, + "paths": { + "@ref/*": [ + "./*" + ] + } }, "referencedMap": { "./b.ts": [ @@ -212,7 +217,7 @@ X; ] }, "latestChangedDtsFile": "./b.d.ts", - "size": 1278 + "size": 1305 } //// [/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..cd71777ea457e 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},"referencedMap":[[3,1]],"latestChangedDtsFile":"./src/index.d.ts"} //// [C:/work/project/dist/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -120,6 +120,11 @@ export const value = myValue; "options": { "composite": true, "outDir": "./", + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, "strict": true }, "referencedMap": { @@ -128,7 +133,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1347 + "size": 1393 } Watch Registrations:: @@ -170,7 +175,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},"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,6 +231,11 @@ Output:: "options": { "composite": true, "outDir": "./", + "paths": { + "abs-dep": [ + "D:/work/deps/dep.d.ts" + ] + }, "strict": true }, "referencedMap": { @@ -252,7 +262,7 @@ Output:: ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1518 + "size": 1564 } Watch Registrations:: @@ -263,6 +273,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..50765e2f45bdc 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":"../../.."},"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,6 +209,11 @@ export {}; "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -231,7 +236,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1791 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -443,8 +448,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":"../../.."},"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,6 +529,11 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -545,7 +556,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1821 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -655,7 +666,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 +741,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":"../../.."},"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,6 +813,11 @@ projects/server/src/server.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -815,7 +836,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1603 + "size": 1654 } //// [/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 +921,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..582ad179a7809 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":"../../.."},"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,6 +209,11 @@ export {}; "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -231,7 +236,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1740 + "size": 1791 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -443,8 +448,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":"../../.."},"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,6 +529,11 @@ projects/shared/dist/src/random.d.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -545,7 +556,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1770 + "size": 1821 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -655,7 +666,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 +741,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":"../../.."},"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,6 +813,11 @@ projects/shared/dist/src/logging.d.ts "options": { "composite": true, "outDir": "..", + "paths": { + ":shared/*": [ + "./src/../../shared/src/*" + ] + }, "rootDir": "../../.." }, "referencedMap": { @@ -815,7 +836,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1603 + "size": 1654 } //// [/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 +921,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 index de4605c6ddd70..1099f8af0a8dd 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-0.js @@ -71,7 +71,7 @@ declare const console: { log(msg: any): void; }; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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"} +{"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", @@ -129,10 +129,12 @@ export declare const result: any; ] ], "options": { + "allowArbitraryExtensions": false, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -162,7 +164,7 @@ export declare const result: any; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1678 + "size": 1734 } producer/tsconfig.json:: @@ -218,100 +220,17 @@ Edit [1]:: change allowArbitraryExtensions without changing source files } 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:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,1 @@ --export declare const result: { -- value: string; --}; -+export declare const result: any; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - -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:: - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,1 @@ --export declare const result: { -- value: string; --}; -+export declare const result: any; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - -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'... - +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -369,10 +288,12 @@ export declare const result: { ] ], "options": { + "allowArbitraryExtensions": true, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -384,7 +305,7 @@ export declare const result: { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1443 + "size": 1498 } producer/tsconfig.json:: @@ -396,6 +317,42 @@ 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 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 index 253812412d212..799d5d97618ff 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowArbitraryExtensions-incremental-direction-1.js @@ -65,7 +65,7 @@ export declare const result: { }; //// [/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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -123,10 +123,12 @@ export declare const result: { ] ], "options": { + "allowArbitraryExtensions": true, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -138,7 +140,7 @@ export declare const result: { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1443 + "size": 1498 } producer/tsconfig.json:: @@ -186,82 +188,15 @@ Edit [1]:: change allowArbitraryExtensions without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,3 @@ --export declare const result: any; -+export declare const result: { -+ value: string; -+}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing allowArbitraryExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,3 @@ --export declare const result: any; -+export declare const result: { -+ value: string; -+}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - -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';    ~~~~~~~~~~~~~~ +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 @@ -269,7 +204,7 @@ Found 1 error in producer/index.ts:1 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"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"} +{"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", @@ -327,10 +262,12 @@ export declare const result: any; ] ], "options": { + "allowArbitraryExtensions": false, "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -360,7 +297,7 @@ export declare const result: any; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1678 + "size": 1734 } producer/tsconfig.json:: @@ -372,6 +309,58 @@ 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 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 index d3e3f930821a7..9f53eb46f0b22 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-0.js @@ -81,7 +81,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -168,6 +168,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -182,7 +183,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1950 + "size": 1972 } producer/tsconfig.json:: @@ -236,9 +237,13 @@ Edit [1]:: change allowImportingTsExtensions without changing source files 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":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":true,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -302,11 +307,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", "impliedNodeFormat": 99 } } @@ -325,6 +330,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -339,7 +345,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1949 + "size": 1971 } producer/tsconfig.json:: @@ -349,14 +355,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -370,14 +369,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -391,114 +382,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.ts").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1949 -} +//// [/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:: 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 index 3106efed11496..e1d44ef8b2255 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/allowImportingTsExtensions-incremental-direction-1.js @@ -81,7 +81,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -168,6 +168,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -182,7 +183,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1949 + "size": 1971 } producer/tsconfig.json:: @@ -236,9 +237,13 @@ Edit [1]:: change allowImportingTsExtensions without changing source files 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":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"allowImportingTsExtensions":false,"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -302,11 +307,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", "impliedNodeFormat": 99 } } @@ -325,6 +330,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rootDir": "..", "strict": true, @@ -339,7 +345,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1950 + "size": 1972 } producer/tsconfig.json:: @@ -349,14 +355,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -370,14 +369,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing allowImportingTsExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -391,114 +382,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.js").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1950 -} +//// [/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:: 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 index 07c9bb0242ba0..023a437247b5f 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-0.js @@ -77,7 +77,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -157,10 +157,12 @@ export declare const result: import("fixture/fallback").Thing; ] ], "options": { + "customConditions": [], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -175,7 +177,7 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "size": 2055 } producer/tsconfig.json:: @@ -229,57 +231,13 @@ Edit [1]:: change customConditions without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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* +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -359,10 +317,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -377,9 +339,47 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "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 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 index 68be259c05b2b..4e84c94ec673f 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/customConditions-incremental-direction-1.js @@ -79,7 +79,7 @@ export declare function make(): Thing; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -159,10 +159,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -177,7 +181,7 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "size": 2062 } producer/tsconfig.json:: @@ -229,57 +233,13 @@ Edit [1]:: change customConditions without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -359,10 +319,12 @@ export declare const result: import("fixture/fallback").Thing; ] ], "options": { + "customConditions": [], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -377,9 +339,47 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "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 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 index 98251eca67218..f427fe96fa94f 100644 --- 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 @@ -76,7 +76,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -160,6 +160,7 @@ export declare const result: import("fixture/fallback").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -174,7 +175,7 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "size": 2033 } producer/tsconfig.json:: @@ -228,57 +229,13 @@ Edit [1]:: change customConditions without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/special").Thing; -+export declare const result: import("fixture/fallback").Thing; - - -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* +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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -358,10 +315,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -376,9 +337,47 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "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 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 index 20ccb76c928a7..740820aa57d76 100644 --- 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 @@ -79,7 +79,7 @@ export declare function make(): Thing; 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":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -159,10 +159,14 @@ export declare const result: import("fixture/special").Thing; ] ], "options": { + "customConditions": [ + "custom" + ], "composite": true, "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -177,7 +181,7 @@ export declare const result: import("fixture/special").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2009 + "size": 2062 } producer/tsconfig.json:: @@ -228,57 +232,13 @@ Edit [1]:: change customConditions without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing customConditions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/fallback").Thing; -+export declare const result: import("fixture/special").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -362,6 +322,7 @@ export declare const result: import("fixture/fallback").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -376,9 +337,47 @@ export declare const result: import("fixture/fallback").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2010 + "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 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 index 77ee104fb9b7d..1e146beeaa395 100644 --- 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 @@ -85,7 +85,7 @@ Result = __decorate([ 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -133,6 +133,7 @@ export { Result }; "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -141,7 +142,7 @@ export { Result }; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1479 + "size": 1502 } producer/tsconfig.json:: @@ -192,9 +193,29 @@ Edit [1]:: change strictNullChecks without changing source files 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -242,6 +263,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -250,7 +272,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1478 + "size": 1501 } producer/tsconfig.json:: @@ -260,19 +282,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [Object]) -+ __metadata("design:paramtypes", [String]) - ], Result); - export { Result }; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -284,19 +293,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [Object]) -+ __metadata("design:paramtypes", [String]) - ], Result); - export { Result }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -310,25 +306,7 @@ Output:: [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] *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/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* 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 index a548270dec6c1..5e92cc16b9ee1 100644 --- 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 @@ -85,7 +85,7 @@ Result = __decorate([ 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -133,6 +133,7 @@ export { Result }; "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -141,7 +142,7 @@ export { Result }; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1478 + "size": 1501 } producer/tsconfig.json:: @@ -192,9 +193,29 @@ Edit [1]:: change strictNullChecks without changing source files 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -242,6 +263,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "declaration": true, "experimentalDecorators": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -250,7 +272,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1479 + "size": 1502 } producer/tsconfig.json:: @@ -260,19 +282,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [String]) -+ __metadata("design:paramtypes", [Object]) - ], Result); - export { Result }; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -284,19 +293,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -12,6 +12,6 @@ - }; - Result = __decorate([ - decorate, -- __metadata("design:paramtypes", [String]) -+ __metadata("design:paramtypes", [Object]) - ], Result); - export { Result }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -310,25 +306,7 @@ Output:: [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] *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/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* 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 index f5dfb8fd4218b..2c8919c4f76f5 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-0.js @@ -80,7 +80,7 @@ declare const console: { log(msg: any): void; }; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -171,7 +171,9 @@ export declare const result: ("first" | "second")[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -190,7 +192,7 @@ export declare const result: ("first" | "second")[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2079 + "size": 2130 } producer/tsconfig.json:: @@ -242,9 +244,13 @@ Edit [1]:: change deduplicatePackages without changing source files 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":"e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n","impliedNodeFormat":1}],"fileIdsList":[[3,4],[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -303,11 +309,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "e96591b5ed8dde6e90e57827d7658d94-export declare const result: (\"first\" | \"second\")[];\n", + "signature": "4fa89edf3c871627b0eabe835299a013-export declare const result: \"first\"[];\n", "impliedNodeFormat": 1 } } @@ -325,7 +331,9 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -344,22 +352,19 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1948 + "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 - - -Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"[]; -+export declare const result: ("first" | "second")[]; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -373,14 +378,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing deduplicatePackages without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"[]; -+export declare const result: ("first" | "second")[]; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -393,112 +390,9 @@ Output:: [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,"module":99,"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, - "module": 99, - "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": 1933 -} +//// [/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:: 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 index ba6d7ab7b79e9..b8d4aa7d20567 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/deduplicatePackages-incremental-direction-1.js @@ -80,7 +80,7 @@ declare const console: { log(msg: any): void; }; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[5,1],[3,2],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -161,7 +161,9 @@ export declare const result: "first"[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -180,7 +182,7 @@ export declare const result: "first"[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "size": 1983 } producer/tsconfig.json:: @@ -237,7 +239,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[6,1],[3,2],[5,3]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -328,7 +330,9 @@ export declare const result: ("first" | "second")[]; "composite": true, "emitDeclarationOnly": true, "declaration": true, + "deduplicatePackages": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -347,11 +351,14 @@ export declare const result: ("first" | "second")[]; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2079 + "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 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 index 51ea3b6716769..7d7534c5fa3a1 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-0.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,13 +105,14 @@ export declare const result: number; "declaration": true, "isolatedDeclarations": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1262 + "size": 1285 } producer/tsconfig.json:: @@ -157,11 +158,23 @@ Edit [1]:: change isolatedDeclarations without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -208,13 +221,40 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1261 + "size": 1608 } producer/tsconfig.json:: @@ -224,51 +264,29 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,12 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,12 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -294,7 +312,7 @@ Output:: 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,"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]} +{"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", @@ -336,6 +354,7 @@ Found 1 error in producer/index.ts:1 "declaration": true, "isolatedDeclarations": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -373,7 +392,7 @@ Found 1 error in producer/index.ts:1 "original": 2 } ], - "size": 1448 + "size": 1471 } producer/tsconfig.json:: 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 index 73a6a429fa301..acd2695428799 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedDeclarations-incremental-direction-1.js @@ -66,7 +66,7 @@ interface Symbol { } 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,"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]} +{"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", @@ -108,6 +108,7 @@ declare const console: { log(msg: any): void; }; "declaration": true, "isolatedDeclarations": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -145,7 +146,7 @@ declare const console: { log(msg: any): void; }; "original": 2 } ], - "size": 1448 + "size": 1471 } producer/tsconfig.json:: @@ -202,23 +203,15 @@ Edit [1]:: change isolatedDeclarations without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsSkipped +ExitStatus:: Success 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/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: 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},"22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n"],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"isolatedDeclarations":false,"module":99,"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]} +{"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", @@ -250,8 +243,13 @@ Found 1 error in producer/index.ts:1 { "fileName": "../index.ts", "version": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", - "signature": "22ca88e642a81a7a9c2fbfee1956ef64-export const result = 1 + 2;\n", - "impliedNodeFormat": "CommonJS" + "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": { @@ -260,44 +258,14 @@ Found 1 error in producer/index.ts:1 "declaration": true, "isolatedDeclarations": false, "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": 1449 + "latestChangedDtsFile": "./index.d.ts", + "size": 1285 } producer/tsconfig.json:: @@ -305,73 +273,20 @@ 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 -Diff:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export declare const result: number; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,12 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsSkipped +ExitStatus:: Success 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:: Changing isolatedDeclarations without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export declare const result: number; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,12 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -384,65 +299,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1262 -} +//// [/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:: 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 index 3cfb1c8654c89..4031f2e61becb 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-0.js @@ -67,7 +67,7 @@ export {}; 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,14 +112,16 @@ export const result = 1 /* Value.Result */; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1340 + "size": 1387 } producer/tsconfig.json:: @@ -167,24 +169,80 @@ Edit [1]:: change isolatedModules without changing source files 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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,5 +1,1 @@ --var Value; --(function (Value) { -- Value[Value["Result"] = 1] = "Result"; --})(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -196,18 +254,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,5 +1,1 @@ --var Value; --(function (Value) { -- Value[Value["Result"] = 1] = "Result"; --})(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -221,13 +267,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = Value.Result; - +//// [/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* 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 index fe6cba3ad4816..8329852232b87 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/isolatedModules-incremental-direction-1.js @@ -71,7 +71,7 @@ var 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -116,14 +116,16 @@ export const result = Value.Result; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1340 + "size": 1386 } producer/tsconfig.json:: @@ -171,24 +173,76 @@ Edit [1]:: change isolatedModules without changing source files 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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,5 @@ --export const result = 1 /* Value.Result */; -+var Value; -+(function (Value) { -+ Value[Value["Result"] = 1] = "Result"; -+})(Value || (Value = {})); -+export const result = Value.Result; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -200,18 +254,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,5 @@ --export const result = 1 /* Value.Result */; -+var Value; -+(function (Value) { -+ Value[Value["Result"] = 1] = "Result"; -+})(Value || (Value = {})); -+export const result = Value.Result; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -225,9 +267,7 @@ Output:: [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] *modified* -export const result = 1 /* Value.Result */; - +//// [/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* 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 index b311f1945e5b2..c91940528230f 100644 --- 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 @@ -72,7 +72,7 @@ var 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,"module":99,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -117,7 +117,9 @@ export const result = 1 /* Value.Result */; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": false, "module": 99, + "moduleResolution": 100, "outDir": "./", "preserveConstEnums": true, "rootDir": "..", @@ -125,7 +127,7 @@ export const result = 1 /* Value.Result */; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1366 + "size": 1413 } producer/tsconfig.json:: @@ -174,23 +176,81 @@ Edit [1]:: change isolatedModules without changing source files 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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -202,17 +262,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = Value.Result; -+export const result = 1 /* Value.Result */; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -226,13 +275,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = Value.Result; - +//// [/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* 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 index 5f0f3aedb468b..158d03c121c62 100644 --- 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 @@ -72,7 +72,7 @@ var 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,"module":99,"outDir":"./","preserveConstEnums":true,"rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -117,7 +117,9 @@ export const result = Value.Result; "composite": true, "emitDeclarationOnly": false, "declaration": true, + "isolatedModules": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "preserveConstEnums": true, "rootDir": "..", @@ -125,7 +127,7 @@ export const result = Value.Result; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1366 + "size": 1412 } producer/tsconfig.json:: @@ -174,23 +176,81 @@ Edit [1]:: change isolatedModules without changing source files 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:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = 1 /* Value.Result */; -+export const result = Value.Result; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -202,17 +262,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing isolatedModules without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -2,4 +2,4 @@ - (function (Value) { - Value[Value["Result"] = 1] = "Result"; - })(Value || (Value = {})); --export const result = 1 /* Value.Result */; -+export const result = Value.Result; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -226,13 +275,7 @@ Output:: [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] *modified* -var Value; -(function (Value) { - Value[Value["Result"] = 1] = "Result"; -})(Value || (Value = {})); -export const result = 1 /* Value.Result */; - +//// [/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* 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 index 677dd48f86fd0..6dcc227f685cf 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-0.js @@ -72,7 +72,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -118,14 +118,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "A.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -174,79 +176,8 @@ Edit [1]:: change jsxFactory without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace B { -+declare namespace A { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- b: number; -+ a: string; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: B.JSX.Element; -+export declare const result: A.JSX.Element; - export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace B { -+declare namespace A { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- b: number; -+ a: string; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: B.JSX.Element; -+export declare const result: A.JSX.Element; - export {}; - - -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'... - +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; @@ -263,7 +194,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -309,14 +240,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "B.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -327,6 +260,41 @@ 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 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 index 75ba75a1174af..cdae568b2e511 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFactory-incremental-direction-1.js @@ -72,7 +72,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -118,14 +118,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "B.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -174,79 +176,8 @@ Edit [1]:: change jsxFactory without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace A { -+declare namespace B { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- a: string; -+ b: number; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: A.JSX.Element; -+export declare const result: B.JSX.Element; - export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing jsxFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,13 +1,13 @@ --declare namespace A { -+declare namespace B { - function create(...args: any[]): any; - namespace JSX { - interface Element { -- a: string; -+ b: number; - } - interface IntrinsicElements { - div: {}; - } - } - } --export declare const result: A.JSX.Element; -+export declare const result: B.JSX.Element; - export {}; - - -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'... - +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; @@ -263,7 +194,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -309,14 +240,16 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "jsx": 2, + "jsxFactory": "A.create", "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1804 + "size": 1851 } producer/tsconfig.json:: @@ -327,6 +260,41 @@ 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 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 index beb75ecb5d53c..ca6b3bde190b5 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-0.js @@ -78,7 +78,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -124,14 +124,17 @@ export const result = A.create(A.Fragment, null, "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": 1712 + "size": 1793 } producer/tsconfig.json:: @@ -181,21 +184,79 @@ Edit [1]:: change jsxFragmentFactory without changing source files 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:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(B.Fragment, null, -+export const result = A.create(A.Fragment, null, - A.create("div", null)); - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -207,15 +268,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(B.Fragment, null, -+export const result = A.create(A.Fragment, null, - A.create("div", null)); - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -229,10 +281,7 @@ Output:: [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] *modified* -export const result = A.create(B.Fragment, null, - A.create("div", null)); - +//// [/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* 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 index 5e8f7aabea870..bcae8e4e3ac96 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/jsxFragmentFactory-incremental-direction-1.js @@ -78,7 +78,7 @@ 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,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -124,14 +124,17 @@ export const result = A.create(B.Fragment, null, "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": 1712 + "size": 1793 } producer/tsconfig.json:: @@ -181,21 +184,79 @@ Edit [1]:: change jsxFragmentFactory without changing source files 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:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(A.Fragment, null, -+export const result = A.create(B.Fragment, null, - A.create("div", null)); - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -207,15 +268,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing jsxFragmentFactory without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --export const result = A.create(A.Fragment, null, -+export const result = A.create(B.Fragment, null, - A.create("div", null)); - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -229,10 +281,7 @@ Output:: [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] *modified* -export const result = A.create(A.Fragment, null, - A.create("div", null)); - +//// [/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* 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 index 7540d427e040b..5089d17048bb6 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-0.js @@ -97,7 +97,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -179,6 +179,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -193,7 +194,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "size": 1996 } producer/tsconfig.json:: @@ -275,6 +276,8 @@ Output:: 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. @@ -282,96 +285,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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"} +{"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", @@ -453,6 +371,7 @@ export declare const result: import("#/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -467,9 +386,86 @@ export declare const result: import("#/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1965 + "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 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 index 03b14f1c45280..0ab6433a46dd1 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleResolution-incremental-direction-1.js @@ -97,7 +97,7 @@ export declare class Thing { 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"} +{"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", @@ -179,6 +179,7 @@ export declare const result: import("#/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -193,7 +194,7 @@ export declare const result: import("#/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1965 + "size": 1987 } producer/tsconfig.json:: @@ -275,6 +276,8 @@ Output:: 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. @@ -282,96 +285,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -453,6 +371,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -467,9 +386,86 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "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 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 index 0c5ac002039d2..abd33b305fa44 100644 --- 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 @@ -274,6 +274,8 @@ Output:: 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. @@ -281,96 +283,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -452,6 +369,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -466,9 +384,86 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "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 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 index 68c8cf32e9f51..a2c64b2babe6a 100644 --- 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 @@ -97,7 +97,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -179,6 +179,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 3, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -193,7 +194,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1975 + "size": 1996 } producer/tsconfig.json:: @@ -274,6 +275,8 @@ Output:: 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. @@ -281,91 +284,6 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing moduleResolution without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#/thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *modified* export declare const result: import("#/thing").Thing; @@ -469,6 +387,83 @@ export declare const result: import("#/thing").Thing; "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 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 index bc37c010dc34e..cd520842cf593 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-0.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,6 +104,7 @@ export declare function result(): any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": false, "outDir": "./", "rootDir": "..", @@ -111,7 +112,7 @@ export declare function result(): any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1293 + "size": 1316 } producer/tsconfig.json:: @@ -159,9 +160,13 @@ Edit [1]:: change noImplicitAny without changing source files 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":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -193,11 +198,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", - "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\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": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", "impliedNodeFormat": 1 } } @@ -207,6 +212,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": true, "outDir": "./", "rootDir": "..", @@ -214,7 +220,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1292 + "size": 1318 } producer/tsconfig.json:: @@ -222,14 +228,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): number; -+export declare function result(): any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -243,14 +242,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): number; -+export declare function result(): any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -263,65 +254,9 @@ Output:: [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,"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, - "noImplicitAny": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1295 -} +//// [/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:: 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 index 9130d975974cb..9ae7dd1fe3aea 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitAny-incremental-direction-1.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"noImplicitAny":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,6 +104,7 @@ export declare function result(): number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": true, "outDir": "./", "rootDir": "..", @@ -111,7 +112,7 @@ export declare function result(): number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1295 + "size": 1318 } producer/tsconfig.json:: @@ -159,9 +160,13 @@ Edit [1]:: change noImplicitAny without changing source files 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":"807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitAny":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -193,11 +198,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "07e17d2b84af20b32e72946a6ad18392-export function result() { let value; value = 1; return value; }\n", - "signature": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\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": "807f0f5295530a080b2e1d9e69d5726a-export declare function result(): number;\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", "impliedNodeFormat": 1 } } @@ -207,6 +212,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitAny": false, "outDir": "./", "rootDir": "..", @@ -214,7 +220,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1296 + "size": 1316 } producer/tsconfig.json:: @@ -222,14 +228,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -243,14 +242,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noImplicitAny without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -263,65 +254,9 @@ Output:: [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,"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, - "noImplicitAny": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1293 -} +//// [/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:: 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 index c0f8a4afa18df..14cbd64e3cb71 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-0.js @@ -61,7 +61,7 @@ export declare const 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":"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,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -107,6 +107,7 @@ export declare const result: { "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": false, "outDir": "./", "rootDir": "..", @@ -114,7 +115,7 @@ export declare const result: { "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1328 + "size": 1351 } producer/tsconfig.json:: @@ -162,9 +163,16 @@ Edit [1]:: change noImplicitThis without changing source files 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":"c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -196,11 +204,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", + "signature": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", "impliedNodeFormat": 1 } } @@ -210,6 +218,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": true, "outDir": "./", "rootDir": "..", @@ -217,7 +226,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1327 + "size": 1353 } producer/tsconfig.json:: @@ -225,17 +234,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): number; -+ get(): any; - }; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -249,17 +248,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): number; -+ get(): any; - }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -272,68 +260,9 @@ Output:: [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,"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, - "noImplicitThis": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1330 -} +//// [/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:: 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 index 000cba3a1e1cb..7f16dd42dc3aa 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noImplicitThis-incremental-direction-1.js @@ -61,7 +61,7 @@ export declare const 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":"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,"noImplicitThis":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -107,6 +107,7 @@ export declare const result: { "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": true, "outDir": "./", "rootDir": "..", @@ -114,7 +115,7 @@ export declare const result: { "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1330 + "size": 1353 } producer/tsconfig.json:: @@ -162,9 +163,16 @@ Edit [1]:: change noImplicitThis without changing source files 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":"dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noImplicitThis":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -196,11 +204,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "dab06848c7e149cc7e6c5e71bc1721fc-export declare const result: {\n value: number;\n get(): number;\n};\n", + "signature": "c783f3b5262ce65d132f1ca575583c6e-export declare const result: {\n value: number;\n get(): any;\n};\n", "impliedNodeFormat": 1 } } @@ -210,6 +218,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noImplicitThis": false, "outDir": "./", "rootDir": "..", @@ -217,7 +226,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1331 + "size": 1351 } producer/tsconfig.json:: @@ -225,17 +234,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): any; -+ get(): number; - }; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -249,17 +248,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noImplicitThis without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,4 @@ - export declare const result: { - value: number; -- get(): any; -+ get(): number; - }; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -272,68 +260,9 @@ Output:: [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,"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, - "noImplicitThis": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1328 -} +//// [/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:: 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 index d585045ad1e73..a3e0b4bd89b37 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-0.js @@ -59,7 +59,7 @@ declare const console: { log(msg: any): void; }; 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,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,6 +105,7 @@ export declare const result: number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": false, "outDir": "./", "rootDir": "..", @@ -112,7 +113,7 @@ export declare const result: number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1321 + "size": 1344 } producer/tsconfig.json:: @@ -160,9 +161,13 @@ Edit [1]:: change noUncheckedIndexedAccess without changing source files 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":"a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -194,11 +199,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", + "signature": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", "impliedNodeFormat": 1 } } @@ -208,6 +213,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": true, "outDir": "./", "rootDir": "..", @@ -215,7 +221,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1320 + "size": 1355 } producer/tsconfig.json:: @@ -223,14 +229,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number | undefined; -+export declare const result: number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -244,14 +243,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number | undefined; -+export declare const result: number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -264,65 +255,9 @@ Output:: [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,"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, - "noUncheckedIndexedAccess": true, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1332 -} +//// [/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:: 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 index 7e1a2b9a16cba..6aff8131dd956 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noUncheckedIndexedAccess-incremental-direction-1.js @@ -59,7 +59,7 @@ declare const console: { log(msg: any): void; }; 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,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,6 +105,7 @@ export declare const result: number | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": true, "outDir": "./", "rootDir": "..", @@ -112,7 +113,7 @@ export declare const result: number | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1332 + "size": 1355 } producer/tsconfig.json:: @@ -160,9 +161,13 @@ Edit [1]:: change noUncheckedIndexedAccess without changing source files 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":"1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"noUncheckedIndexedAccess":false,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -194,11 +199,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "1e3a8ce09fa025921f59d49c8af3e09c-export declare const result: number | undefined;\n", + "signature": "a94472928cda3235e9d3fc6bdd8b2536-export declare const result: number;\n", "impliedNodeFormat": 1 } } @@ -208,6 +213,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "noUncheckedIndexedAccess": false, "outDir": "./", "rootDir": "..", @@ -215,7 +221,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1333 + "size": 1344 } producer/tsconfig.json:: @@ -223,14 +229,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number; -+export declare const result: number | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -244,14 +243,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing noUncheckedIndexedAccess without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: number; -+export declare const result: number | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -264,65 +255,9 @@ Output:: [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,"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, - "noUncheckedIndexedAccess": false, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1321 -} +//// [/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:: 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 index ba82031b88924..bd18cadaa3b7a 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js @@ -98,7 +98,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -177,7 +177,13 @@ export declare const result: import("short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -191,7 +197,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1921 + "size": 1987 } producer/tsconfig.json:: @@ -274,6 +280,8 @@ Output:: 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. @@ -281,92 +289,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("short").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("short").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -445,7 +372,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -459,9 +392,82 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } +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 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 index 114826aeb1061..fa97231e3f483 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js @@ -98,7 +98,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -177,7 +177,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -191,7 +197,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } producer/tsconfig.json:: @@ -274,6 +280,8 @@ Output:: 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. @@ -281,92 +289,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("renamed").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("renamed").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -445,7 +372,13 @@ export declare const result: import("short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "short": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -459,9 +392,82 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1921 + "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. + +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 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 index 90d4ff2f06a7a..2aed0ad80d47d 100644 --- 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 @@ -93,7 +93,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -172,6 +172,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -186,7 +187,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "size": 1956 } producer/tsconfig.json:: @@ -269,6 +270,8 @@ Output:: 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. @@ -276,92 +279,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("renamed").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *modified* { "version": "FakeTSVersion", @@ -440,7 +362,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -454,9 +382,82 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } +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 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 index 36344b50cb04d..76accbce9f295 100644 --- 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 @@ -98,7 +98,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} //// [/home/src/workspaces/project/producer/dist/producer/tsconfig.tsbuildinfo.readable.baseline.txt] *new* { "version": "FakeTSVersion", @@ -177,7 +177,13 @@ export declare const result: import("renamed").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "paths": { + "renamed": [ + "../external/thing.ts" + ] + }, "rootDir": "../../..", "strict": true, "target": 7 @@ -191,7 +197,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1923 + "size": 1991 } producer/tsconfig.json:: @@ -269,6 +275,8 @@ Output:: 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. @@ -276,92 +284,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("renamed").Thing; - - -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:: - - -Diff:: Changing paths without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("renamed").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -440,6 +367,7 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -454,9 +382,82 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1933 + "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 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 index 48ec03206db2a..27c636649e663 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-0.js @@ -74,7 +74,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -158,7 +158,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -172,7 +174,7 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "size": 2076 } producer/tsconfig.json:: @@ -224,57 +226,13 @@ Edit [1]:: change resolvePackageJsonExports without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -358,7 +316,9 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": true, "rootDir": "..", "strict": true, "target": 7 @@ -372,9 +332,47 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "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 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 index e89f91eaa8c60..8e1e7cfa816df 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonExports-incremental-direction-1.js @@ -74,7 +74,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -158,7 +158,9 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": true, "rootDir": "..", "strict": true, "target": 7 @@ -172,7 +174,7 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "size": 2063 } producer/tsconfig.json:: @@ -224,57 +226,13 @@ Edit [1]:: change resolvePackageJsonExports without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -358,7 +316,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -372,9 +332,47 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "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 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 index de5664d45e149..65129ad3903b5 100644 --- 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 @@ -73,7 +73,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -157,6 +157,7 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -171,7 +172,7 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "size": 2030 } producer/tsconfig.json:: @@ -223,57 +224,13 @@ Edit [1]:: change resolvePackageJsonExports without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/deep/nested/thing").Thing; -+export declare const result: import("fixture/short").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -357,7 +314,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -371,9 +330,47 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "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 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 index 1042fbcc11ec3..ad710a9cbd938 100644 --- 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 @@ -74,7 +74,7 @@ export declare function make(): Thing; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -158,7 +158,9 @@ export declare const result: import("fixture/deep/nested/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", + "resolvePackageJsonExports": false, "rootDir": "..", "strict": true, "target": 7 @@ -172,7 +174,7 @@ export declare const result: import("fixture/deep/nested/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2019 + "size": 2076 } producer/tsconfig.json:: @@ -223,57 +225,13 @@ Edit [1]:: change resolvePackageJsonExports without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonExports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("fixture/short").Thing; -+export declare const result: import("fixture/deep/nested/thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -357,6 +315,7 @@ export declare const result: import("fixture/short").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -371,9 +330,47 @@ export declare const result: import("fixture/short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2007 + "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 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 index 3ebd130780d4f..e0362bd202684 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-0.js @@ -96,7 +96,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -178,7 +178,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -192,7 +194,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "size": 2031 } producer/tsconfig.json:: @@ -271,6 +273,8 @@ Output:: 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. @@ -278,92 +282,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -445,7 +368,9 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": true, "rootDir": "../../..", "strict": true, "target": 7 @@ -459,9 +384,82 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "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 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 index cf5d2ec9c540f..64d8a6a66c9d7 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/resolvePackageJsonImports-incremental-direction-1.js @@ -96,7 +96,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -178,7 +178,9 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": true, "rootDir": "../../..", "strict": true, "target": 7 @@ -192,7 +194,7 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "size": 2019 } producer/tsconfig.json:: @@ -271,6 +273,8 @@ Output:: 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. @@ -278,92 +282,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -445,7 +368,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -459,9 +384,82 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "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 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 index 17d01a092249b..b592a1709c917 100644 --- 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 @@ -95,7 +95,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -177,6 +177,7 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -191,7 +192,7 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "size": 1986 } producer/tsconfig.json:: @@ -270,6 +271,8 @@ Output:: 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. @@ -277,92 +280,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../external/thing").Thing; -+export declare const result: import("#thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -444,7 +366,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -458,9 +382,82 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "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 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 index dc3cec30d3d30..7ac4554413346 100644 --- 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 @@ -96,7 +96,7 @@ export declare class Thing { 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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -178,7 +178,9 @@ export declare const result: import("../external/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", + "resolvePackageJsonImports": false, "rootDir": "../../..", "strict": true, "target": 7 @@ -192,7 +194,7 @@ export declare const result: import("../external/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1974 + "size": 2031 } producer/tsconfig.json:: @@ -270,6 +272,8 @@ Output:: 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. @@ -277,92 +281,11 @@ Errors Files 1 external/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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:: - - -Diff:: Changing resolvePackageJsonImports without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("#thing").Thing; -+export declare const result: import("../external/thing").Thing; - - -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] *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,"outDir":"..","rootDir":"../../..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -444,6 +367,7 @@ export declare const result: import("#thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "..", "rootDir": "../../..", "strict": true, @@ -458,9 +382,82 @@ export declare const result: import("#thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1963 + "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 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 index 7af20a5a4f430..c1b9186d635ff 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-0.js @@ -83,7 +83,7 @@ export declare const result = 1; 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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -147,6 +147,7 @@ export const result = 1; "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -164,7 +165,7 @@ export const result = 1; "../index.ts" ], "latestChangedDtsFile": "./index.d.ts", - "size": 1487 + "size": 1510 } producer/tsconfig.json:: @@ -226,9 +227,15 @@ Edit [1]:: change rewriteRelativeImportExtensions without changing source files 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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -291,6 +298,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -303,7 +311,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1435 + "size": 1458 } producer/tsconfig.json:: @@ -314,14 +322,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.js'; -+export { result } from './other.ts'; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -333,14 +333,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.js'; -+export { result } from './other.ts'; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -354,9 +346,7 @@ Output:: [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] *modified* -export { result } from './other.js'; - +//// [/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* 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 index 90a98875b0282..d41a3f495c0ed 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rewriteRelativeImportExtensions-incremental-direction-1.js @@ -75,7 +75,7 @@ export declare const result = 1; 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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -138,6 +138,7 @@ export const result = 1; "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -150,7 +151,7 @@ export const result = 1; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1435 + "size": 1458 } producer/tsconfig.json:: @@ -206,12 +207,18 @@ Output:: 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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1]],"semanticDiagnosticsPerFile":[1,2,3],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -275,6 +282,7 @@ Found 1 error in producer/tsconfig.json:3 "emitDeclarationOnly": false, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -292,7 +300,7 @@ Found 1 error in producer/tsconfig.json:3 "../index.ts" ], "latestChangedDtsFile": "./index.d.ts", - "size": 1487 + "size": 1510 } producer/tsconfig.json:: @@ -303,14 +311,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.ts'; -+export { result } from './other.js'; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -333,14 +333,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,1 +1,1 @@ --export { result } from './other.ts'; -+export { result } from './other.js'; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -362,9 +354,7 @@ Output:: 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] *modified* -export { result } from './other.ts'; - +//// [/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* 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 index 6d5323032b809..95861922032d7 100644 --- 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 @@ -81,7 +81,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -167,6 +167,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -182,7 +183,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1955 + "size": 1977 } producer/tsconfig.json:: @@ -236,9 +237,13 @@ Edit [1]:: change rewriteRelativeImportExtensions without changing source files 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":"68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -302,11 +307,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", + "signature": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", "impliedNodeFormat": 99 } } @@ -324,6 +329,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -339,7 +345,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1954 + "size": 1976 } producer/tsconfig.json:: @@ -349,14 +355,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -370,14 +369,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.ts").Thing; -+export declare const result: import("./thing.js").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -391,114 +382,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.ts").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rewriteRelativeImportExtensions": true, - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1954 -} +//// [/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:: 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 index 34d5831faf882..b13c82554733d 100644 --- 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 @@ -81,7 +81,7 @@ export declare class Thing { } //// [/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,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -167,6 +167,7 @@ export declare class Thing { "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": true, "rootDir": "..", @@ -182,7 +183,7 @@ export declare class Thing { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1954 + "size": 1976 } producer/tsconfig.json:: @@ -236,9 +237,13 @@ Edit [1]:: change rewriteRelativeImportExtensions without changing source files 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":"1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n","impliedNodeFormat":99}],"fileIdsList":[[2],[3]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":199,"outDir":"./","rewriteRelativeImportExtensions":false,"rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -302,11 +307,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "1acc417b9e47816f05fd26619d1e5931-export declare const result: import(\"./thing.ts\").Thing;\n", + "signature": "68712344c485b50d4e58f0f644a45e17-export declare const result: import(\"./thing.js\").Thing;\n", "impliedNodeFormat": 99 } } @@ -324,6 +329,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 199, + "moduleResolution": 99, "outDir": "./", "rewriteRelativeImportExtensions": false, "rootDir": "..", @@ -339,7 +345,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1955 + "size": 1977 } producer/tsconfig.json:: @@ -349,14 +355,7 @@ SemanticDiagnostics:: *refresh* /home/src/workspaces/project/producer/factory.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -370,14 +369,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing rewriteRelativeImportExtensions without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing.js").Thing; -+export declare const result: import("./thing.ts").Thing; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -391,114 +382,10 @@ Output:: [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] *modified* -export declare const result: import("./thing.js").Thing; - +//// [/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] *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,"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, - "outDir": "./", - "rewriteRelativeImportExtensions": false, - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "../factory.ts": [ - "../thing.ts" - ], - "../index.ts": [ - "../factory.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1955 -} +//// [/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:: 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 index 3ee872f7d5720..28b0c28ce4f9c 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-0.js @@ -79,7 +79,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -162,8 +162,10 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [], "strict": true, "target": 7 }, @@ -176,7 +178,7 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "size": 1951 } producer/tsconfig.json:: @@ -233,58 +235,13 @@ Edit [1]:: change rootDirs without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -367,8 +324,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -381,9 +343,48 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "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 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 index 88e28314e1cb3..6284a8116c37c 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/rootDirs-incremental-direction-1.js @@ -82,7 +82,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -165,8 +165,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -179,7 +184,7 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "size": 1963 } producer/tsconfig.json:: @@ -233,58 +238,13 @@ Edit [1]:: change rootDirs without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -367,8 +327,10 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [], "strict": true, "target": 7 }, @@ -381,9 +343,48 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "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 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 index 41021543a73fc..b16b31ceee3ab 100644 --- 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 @@ -78,7 +78,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -161,6 +161,7 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -175,7 +176,7 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "size": 1937 } producer/tsconfig.json:: @@ -232,58 +233,13 @@ Edit [1]:: change rootDirs without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./thing").Thing; -+export declare const result: import("../generated/thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -366,8 +322,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -380,9 +341,48 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "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 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 index 25efbf63a1759..fe057f0048a98 100644 --- 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 @@ -82,7 +82,7 @@ export declare class Thing { 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -165,8 +165,13 @@ export declare const result: import("./thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", + "rootDirs": [ + "../src", + "../generated" + ], "strict": true, "target": 7 }, @@ -179,7 +184,7 @@ export declare const result: import("./thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1903 + "size": 1963 } producer/tsconfig.json:: @@ -232,58 +237,13 @@ Edit [1]:: change rootDirs without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing rootDirs without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/src/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/src/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../generated/thing").Thing; -+export declare const result: import("./thing").Thing; - - -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* +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./src/index.d.ts"} +{"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", @@ -366,6 +326,7 @@ export declare const result: import("../generated/thing").Thing; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -380,9 +341,48 @@ export declare const result: import("../generated/thing").Thing; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1914 + "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 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 index ee4a021f3f6a4..810f0193d8e40 100644 --- 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 @@ -170,7 +170,7 @@ export declare class Result { } //// [/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":"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":false},"referencedMap":[[3,1]],"latestChangedDtsFile":"./a.d.ts","emitSignatures":[[2,"5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n"]]} +{"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", @@ -207,11 +207,11 @@ export declare class Result { { "fileName": "../a.ts", "version": "6afaf1032039cbb1d697c5a0d9d5ef8e-export class Result {\n /** @internal */\n value = \"\";\n}\n", - "signature": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\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": "7eaaf76209ae3bb09b01c12a46574b5b-export declare class Result {\n}\n", + "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", "impliedNodeFormat": 1 } }, @@ -246,22 +246,13 @@ export declare class Result { ] }, "latestChangedDtsFile": "./a.d.ts", - "emitSignatures": [ - { - "file": "../a.ts", - "signature": "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n", - "original": [ - 2, - "5b620b9a2eeda942af7e65d54347d0b1-export declare class Result {\n /** @internal */\n value: string;\n}\n" - ] - } - ], - "size": 1676 + "size": 1583 } tsconfig.json:: SemanticDiagnostics:: Signatures:: +(stored at emit) /home/src/workspaces/project/a.ts Edit [1]:: no change @@ -282,16 +273,28 @@ export class Result { tsgo --project . --listEmittedFiles -ExitStatus:: Success +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":"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"} +{"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", @@ -339,11 +342,11 @@ export declare class Result { { "fileName": "../b.ts", "version": "35c8c17113c91a4b31a43459ee90365b-import { Result } from './a';\nexport const forwarded = new Result().value;\n", - "signature": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\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": "3ed67fd4ad48a5fd29c57ca49adac5f4-export declare const forwarded: string;\n", + "signature": "caea12f66905151156caacf79adc3b29-export declare const forwarded: any;\n", "impliedNodeFormat": 1 } } @@ -366,64 +369,56 @@ export declare class Result { "../a.ts" ] }, - "latestChangedDtsFile": "./a.d.ts", - "size": 1500 + "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 -Diff:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. ---- nonIncremental /home/src/workspaces/project/dist/b.d.ts -+++ incremental /home/src/workspaces/project/dist/b.d.ts -@@ -1,1 +1,1 @@ --export declare const forwarded: any; -+export declare const forwarded: string; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: no change tsgo --project . --listEmittedFiles -ExitStatus:: Success +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:: Option-only declaration emit leaves stale shape signatures, so a source edit does not invalidate dependent output and diagnostics. ---- nonIncremental /home/src/workspaces/project/dist/b.d.ts -+++ incremental /home/src/workspaces/project/dist/b.d.ts -@@ -1,1 +1,1 @@ --export declare const forwarded: any; -+export declare const forwarded: string; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [4]:: force rebuild tsgo --build --verbose --force @@ -445,106 +440,9 @@ Output:: 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] *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 -} +//// [/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:: 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 index 59f8fe9febb2d..901c17204b506 100644 --- 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 @@ -57,7 +57,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -103,12 +103,13 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1273 + "size": 1296 } producer/tsconfig.json:: @@ -155,9 +156,13 @@ Edit [1]:: change strict without changing source files 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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -189,11 +194,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -203,13 +208,14 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1288 + "size": 1299 } producer/tsconfig.json:: @@ -217,14 +223,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -238,14 +237,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -258,64 +249,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1276 -} +//// [/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:: 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 index d4ea8ea910617..b0faea9cc1f3b 100644 --- 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 @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,13 +104,14 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1276 + "size": 1299 } producer/tsconfig.json:: @@ -156,9 +157,13 @@ Edit [1]:: change strict without changing source files 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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -190,11 +195,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -204,12 +209,13 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1261 + "size": 1296 } producer/tsconfig.json:: @@ -217,14 +223,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -238,14 +237,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -258,63 +249,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1273 -} +//// [/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:: 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 index 1b238ffbb0ce9..a7fbf4c825a46 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-0.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,13 +104,14 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1276 + "size": 1299 } producer/tsconfig.json:: @@ -157,9 +158,13 @@ Edit [1]:: change strict without changing source files 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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -191,11 +196,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -205,13 +210,14 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1275 + "size": 1310 } producer/tsconfig.json:: @@ -219,14 +225,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -240,14 +239,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -260,64 +251,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1287 -} +//// [/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:: 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 index 6e7c7acd39822..c69a4d4303c80 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strict-incremental-direction-1.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,13 +104,14 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1287 + "size": 1310 } producer/tsconfig.json:: @@ -157,9 +158,13 @@ Edit [1]:: change strict without changing source files 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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -191,11 +196,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -205,13 +210,14 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1288 + "size": 1299 } producer/tsconfig.json:: @@ -219,14 +225,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -240,14 +239,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strict without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -260,64 +251,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1276 -} +//// [/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:: 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 index 2f98ae5aedb08..301d0721935f1 100644 --- 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 @@ -59,7 +59,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,6 +105,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, @@ -112,7 +113,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1312 + "size": 1335 } producer/tsconfig.json:: @@ -162,7 +163,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -208,6 +209,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -215,7 +217,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1311 + "size": 1334 } producer/tsconfig.json:: 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 index 0196ca7bb328b..13692a385debe 100644 --- 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 @@ -59,7 +59,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,6 +105,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -112,7 +113,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1311 + "size": 1334 } producer/tsconfig.json:: @@ -162,7 +163,7 @@ 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,"outDir":"./","rootDir":"..","strict":false,"strictNullChecks":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -208,6 +209,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": false, @@ -215,7 +217,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1312 + "size": 1335 } producer/tsconfig.json:: 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 index 1cf550e411a9d..aa9c9123e7d38 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-0.js @@ -62,7 +62,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo 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,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -108,6 +108,7 @@ export declare const result: any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -115,7 +116,7 @@ export declare const result: any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1543 + "size": 1566 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictBindCallApply without changing source files 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":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "signature": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -218,7 +224,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1542 + "size": 1574 } producer/tsconfig.json:: @@ -226,14 +232,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: () => number; -+export declare const result: any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -247,14 +246,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: () => number; -+export declare const result: any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -267,65 +258,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBindCallApply": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1551 -} +//// [/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:: 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 index 14bcbe496fac3..e67345218e4dc 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBindCallApply-incremental-direction-1.js @@ -62,7 +62,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo 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,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -108,6 +108,7 @@ export declare const result: () => number; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -115,7 +116,7 @@ export declare const result: () => number; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1551 + "size": 1574 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictBindCallApply without changing source files 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":"dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBindCallApply":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "dd700f0a27833368337e604b37882a82-export declare const result: () => number;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -218,7 +224,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1552 + "size": 1566 } producer/tsconfig.json:: @@ -226,14 +232,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: () => number; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -247,14 +246,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictBindCallApply without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: () => number; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -267,65 +258,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBindCallApply": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1543 -} +//// [/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:: 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 index 10f73a685a4bb..9d2b402473cab 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-0.js @@ -62,7 +62,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo 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,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -108,6 +108,7 @@ export declare const result: any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -115,7 +116,7 @@ export declare const result: any; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1506 + "size": 1529 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictBuiltinIteratorReturn without changing source files 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":"ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\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": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -218,7 +224,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1505 + "size": 1543 } producer/tsconfig.json:: @@ -226,14 +232,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -247,14 +246,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -267,65 +258,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBuiltinIteratorReturn": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1520 -} +//// [/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:: 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 index 64110e78cce2e..31ffc8c590cab 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictBuiltinIteratorReturn-incremental-direction-1.js @@ -62,7 +62,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo 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,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -108,6 +108,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -115,7 +116,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1520 + "size": 1543 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictBuiltinIteratorReturn without changing source files 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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictBuiltinIteratorReturn":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": "CommonJS", "original": { "version": "5101d84f9ace10747f4ede9ff5732389-export const result = new Set().values().next().value;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "ade73a776296d5caf71a4247dda83bca-export declare const result: any;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -218,7 +224,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1521 + "size": 1529 } producer/tsconfig.json:: @@ -226,14 +232,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -247,14 +246,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictBuiltinIteratorReturn without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: any; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -267,65 +258,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictBuiltinIteratorReturn": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1506 -} +//// [/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:: 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 index d5ff631bab279..8269a651722ea 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-0.js @@ -66,7 +66,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,6 +112,7 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -119,7 +120,7 @@ export {}; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1577 + "size": 1600 } producer/tsconfig.json:: @@ -167,9 +168,20 @@ Edit [1]:: change strictFunctionTypes without changing source files 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":"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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -201,11 +213,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", + "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 } } @@ -215,6 +227,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -222,7 +235,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1576 + "size": 1650 } producer/tsconfig.json:: @@ -230,21 +243,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,8 +1,5 @@ - interface Animal { - name: string; - } --interface Dog extends Animal { -- bark(): void; --} --export declare const result: Dog; -+export declare const result: Animal; - export {}; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -258,21 +257,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,8 +1,5 @@ - interface Animal { - name: string; - } --interface Dog extends Animal { -- bark(): void; --} --export declare const result: Dog; -+export declare const result: Animal; - export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -285,72 +269,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictFunctionTypes": true, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1627 -} +//// [/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:: 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 index 61cb5de3740e7..f4ccac8bde2f7 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictFunctionTypes-incremental-direction-1.js @@ -69,7 +69,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -115,6 +115,7 @@ export {}; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -122,7 +123,7 @@ export {}; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1627 + "size": 1650 } producer/tsconfig.json:: @@ -170,9 +171,17 @@ Edit [1]:: change strictFunctionTypes without changing source files 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":"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,"outDir":"./","rootDir":"..","strict":true,"strictFunctionTypes":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -204,11 +213,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "58143b567605f3d0fa12321118ee48b1-interface Animal {\n name: string;\n}\ninterface Dog extends Animal {\n bark(): void;\n}\nexport declare const result: Dog;\nexport {};\n", + "signature": "cc8f0d15597161cda5db542420972365-interface Animal {\n name: string;\n}\nexport declare const result: Animal;\nexport {};\n", "impliedNodeFormat": 1 } } @@ -218,6 +227,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -225,7 +235,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1628 + "size": 1600 } producer/tsconfig.json:: @@ -233,21 +243,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,5 +1,8 @@ - interface Animal { - name: string; - } --export declare const result: Animal; -+interface Dog extends Animal { -+ bark(): void; -+} -+export declare const result: Dog; - export {}; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -261,21 +257,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictFunctionTypes without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,5 +1,8 @@ - interface Animal { - name: string; - } --export declare const result: Animal; -+interface Dog extends Animal { -+ bark(): void; -+} -+export declare const result: Dog; - export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -288,69 +269,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictFunctionTypes": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1577 -} +//// [/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:: 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 index 99110e8f998f4..68ffebf3bd0c3 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-0.js @@ -60,7 +60,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -106,6 +106,7 @@ export declare const result: string; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -114,7 +115,7 @@ export declare const result: string; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1337 + "size": 1360 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictNullChecks without changing source files 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":"9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\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": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", + "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -219,7 +225,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1336 + "size": 1371 } producer/tsconfig.json:: @@ -227,14 +233,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -248,14 +247,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string | undefined; -+export declare const result: string; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -268,66 +259,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictNullChecks": true, - "strictPropertyInitialization": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1348 -} +//// [/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:: 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 index 8547f03c98c60..2c57d22a6fe2a 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/strictNullChecks-incremental-direction-1.js @@ -60,7 +60,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":true,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -106,6 +106,7 @@ export declare const result: string | undefined; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -114,7 +115,7 @@ export declare const result: string | undefined; "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1348 + "size": 1371 } producer/tsconfig.json:: @@ -163,9 +164,13 @@ Edit [1]:: change strictNullChecks without changing source files 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":"233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"strictNullChecks":false,"strictPropertyInitialization":false,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -197,11 +202,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "ff3cebb5439d132016ddfefe7bb8208f-declare const input: string | undefined;\nexport const result = input;\n", - "signature": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\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": "233fb08c56c1b5c6a94a087c9b369d38-export declare const result: string | undefined;\n", + "signature": "9b81b256f3e78b27cca4c1cbf76e31fd-export declare const result: string;\n", "impliedNodeFormat": 1 } } @@ -211,6 +216,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -219,7 +225,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1349 + "size": 1360 } producer/tsconfig.json:: @@ -227,14 +233,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -248,14 +247,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing strictNullChecks without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: string; -+export declare const result: string | undefined; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -268,66 +259,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "strictNullChecks": false, - "strictPropertyInitialization": false, - "target": 7 - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1337 -} +//// [/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:: 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 index 272380fd7a0aa..20d602a7f40ec 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js @@ -70,7 +70,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -142,13 +142,21 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1565 + "size": 1642 } producer/tsconfig.json:: @@ -204,56 +212,13 @@ Edit [1]:: change typeRoots without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -325,13 +290,21 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1564 + "size": 1641 } producer/tsconfig.json:: @@ -344,6 +317,43 @@ 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 +*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 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 index ef5ac7db8059c..f92bf9c27e112 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js @@ -70,7 +70,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -142,13 +142,21 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-b", + "../types-a" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1564 + "size": 1641 } producer/tsconfig.json:: @@ -204,56 +212,13 @@ Edit [1]:: change typeRoots without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing typeRoots without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -325,13 +290,21 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "typeRoots": [ + "../types-a", + "../types-b" + ], + "types": [ + "*" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1565 + "size": 1642 } producer/tsconfig.json:: @@ -344,6 +317,43 @@ 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 +*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 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 index 86f782d8dc024..acd1203be90ce 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js @@ -67,7 +67,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -145,13 +145,18 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "first", + "second" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1771 + "size": 1821 } producer/tsconfig.json:: @@ -204,56 +209,13 @@ Edit [1]:: change types without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -331,13 +293,18 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "second", + "first" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1770 + "size": 1820 } producer/tsconfig.json:: @@ -350,6 +317,43 @@ 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 +*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 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 index e51e9cac1f5f0..679f53518a417 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js @@ -67,7 +67,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -145,13 +145,18 @@ export declare const result: "first"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "second", + "first" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1770 + "size": 1820 } producer/tsconfig.json:: @@ -204,56 +209,13 @@ Edit [1]:: change types without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing types without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -331,13 +293,18 @@ export declare const result: "second"; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, - "target": 7 + "target": 7, + "types": [ + "first", + "second" + ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1771 + "size": 1821 } producer/tsconfig.json:: @@ -350,6 +317,43 @@ 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 +*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 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 index 91707910c579e..f535671384e60 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-0.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,6 +104,7 @@ export declare function result(): any; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -111,7 +112,7 @@ export declare function result(): any; "useUnknownInCatchVariables": false }, "latestChangedDtsFile": "./index.d.ts", - "size": 1319 + "size": 1342 } producer/tsconfig.json:: @@ -159,9 +160,13 @@ Edit [1]:: change useUnknownInCatchVariables without changing source files 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":"86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -193,11 +198,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", - "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\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": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", + "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", "impliedNodeFormat": 1 } } @@ -207,6 +212,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -214,7 +220,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "useUnknownInCatchVariables": true }, "latestChangedDtsFile": "./index.d.ts", - "size": 1318 + "size": 1345 } producer/tsconfig.json:: @@ -222,14 +228,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): unknown; -+export declare function result(): any; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -243,14 +242,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): unknown; -+export declare function result(): any; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -263,65 +254,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7, - "useUnknownInCatchVariables": true - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1322 -} +//// [/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:: 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 index 4bc5541409735..b7f5479c1b548 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/useUnknownInCatchVariables-incremental-direction-1.js @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":true},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,6 +104,7 @@ export declare function result(): unknown; "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -111,7 +112,7 @@ export declare function result(): unknown; "useUnknownInCatchVariables": true }, "latestChangedDtsFile": "./index.d.ts", - "size": 1322 + "size": 1345 } producer/tsconfig.json:: @@ -159,9 +160,13 @@ Edit [1]:: change useUnknownInCatchVariables without changing source files 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":"635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"outDir":"./","rootDir":"..","strict":true,"target":7,"useUnknownInCatchVariables":false},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -193,11 +198,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "5906842426280b1436801b4605bdacdc-export function result() { try { throw 1; } catch (error) { return error; } }\n", - "signature": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\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": "635c23f8927b342f5cb9d08a33d41270-export declare function result(): unknown;\n", + "signature": "86c77d7e37fa31e2429019792182f793-export declare function result(): any;\n", "impliedNodeFormat": 1 } } @@ -207,6 +212,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "emitDeclarationOnly": true, "declaration": true, "module": 99, + "moduleResolution": 100, "outDir": "./", "rootDir": "..", "strict": true, @@ -214,7 +220,7 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "useUnknownInCatchVariables": false }, "latestChangedDtsFile": "./index.d.ts", - "size": 1323 + "size": 1342 } producer/tsconfig.json:: @@ -222,14 +228,7 @@ SemanticDiagnostics:: *refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts *refresh* /home/src/workspaces/project/producer/index.ts Signatures:: - - -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): unknown; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -243,14 +242,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing useUnknownInCatchVariables without editing source files leaves stale output or diagnostics. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare function result(): any; -+export declare function result(): unknown; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -263,65 +254,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7, - "useUnknownInCatchVariables": false - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1319 -} +//// [/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:: 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..70dc1647e506c 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/*"]}},"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,12 @@ export {}; ], "options": { "composite": true, - "outDir": "./" + "outDir": "./", + "paths": { + "@alpha/*": [ + "../alpha/*" + ] + } }, "semanticDiagnosticsPerFile": [ [ @@ -129,7 +134,7 @@ export {}; ] ], "latestChangedDtsFile": "./b.d.ts", - "size": 1364 + "size": 1400 } 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:: From d14e7b609ba18d9ee0ad76f48284c16bb053bc1b Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:32:39 -0700 Subject: [PATCH 03/24] Test incremental emit after changing the inherited paths base Identical paths mappings mean different things when inherited from configs in different directories. Switching only the extended config can leave declarations naming an alias that no longer resolves to the inferred type. Capture both directions in build and incremental modes before fixing invalidation and persistence of the inherited base directory. --- .../execute/tsctests/tscbuild_test.go | 54 ++ ...erited-paths-base-first-to-second-build.js | 520 ++++++++++++++++++ ...erited-paths-base-second-to-first-build.js | 520 ++++++++++++++++++ ...-paths-base-first-to-second-incremental.js | 489 ++++++++++++++++ ...-paths-base-second-to-first-incremental.js | 489 ++++++++++++++++ 5 files changed, 2072 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-first-to-second-build.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-second-to-first-build.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-first-to-second-incremental.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-second-to-first-incremental.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 14f7c12063451..287c5f21deb68 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1414,6 +1414,60 @@ func TestBuildResolutionOptionChanges(t *testing.T) { 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"} + } + const expectedDiff = "Changing the base of inherited paths leaves stale declaration module specifiers." + 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)) + }, + expectedDiff: expectedDiff, + }, + {caption: "no change", expectedDiff: expectedDiff}, + {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/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..7d2e6fc10a7b0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-first-to-second-build.js @@ -0,0 +1,520 @@ +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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1984 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../configs/first/thing").Thing; ++export declare const result: import("short").Thing; + + +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:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../configs/first/thing").Thing; ++export declare const result: import("short").Thing; + + +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] *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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2001 +} + +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..e1e2515bd1f7c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/inherited-paths-base-second-to-first-build.js @@ -0,0 +1,520 @@ +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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2001 +} + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("../configs/first/thing").Thing; + + +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:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("../configs/first/thing").Thing; + + +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] *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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1984 +} + +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/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..67e9e238e594f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-first-to-second-incremental.js @@ -0,0 +1,489 @@ +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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1984 +} + +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'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../configs/first/thing").Thing; ++export declare const result: import("short").Thing; + + +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:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("../configs/first/thing").Thing; ++export declare const result: import("short").Thing; + + +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] *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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2001 +} + +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..c1629c77e3aad --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/inherited-paths-base-second-to-first-incremental.js @@ -0,0 +1,489 @@ +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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 2001 +} + +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'; +   ~~~~~~~~~~~ + + +Found 2 errors in 2 files. + +Errors Files + 1 producer/factory.ts:1 + 1 producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("../configs/first/thing").Thing; + + +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:: + + +Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. +--- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("short").Thing; ++export declare const result: import("../configs/first/thing").Thing; + + +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] *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},"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 + }, + "referencedMap": { + "../../factory.ts": [ + "../../../configs/first/thing.ts" + ], + "../../index.ts": [ + "../../factory.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1984 +} + +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:: From 2dee4b8d177881e532626ee3296f77b54dcf4d46 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 16:52:09 -0700 Subject: [PATCH 04/24] Invalidate inherited paths when their base directory changes Paths mappings depend on the directory of the config that defines them. Comparing the mapping alone misses changes to that inherited directory and can leave declarations naming aliases for the wrong inferred type. Persist the derived base relative to build info and compare it whenever paths participates in invalidation. Ignore unused bases when mappings are absent or empty. --- tools/scripts/tsc/generate-options.ts | 6 +- tools/scripts/tsc/options.test.ts | 1 + tsc/internal/execute/incremental/buildInfo.go | 6 + .../incremental/buildinfo_path_test.go | 4 +- .../incremental/snapshottobuildinfo.go | 4 + .../execute/tsctests/tscbuild_test.go | 4 +- .../tsoptions/compileroptions_test.go | 21 ++ tsc/internal/tsoptions/options_generated.go | 2 + ...fReferencedProjectDeclarationMaps.baseline | 14 +- ...erited-paths-base-first-to-second-build.js | 182 +++++++++--------- ...erited-paths-base-second-to-first-build.js | 182 +++++++++--------- .../paths-build-direction-0.js | 14 +- .../paths-build-direction-1.js | 14 +- .../paths-unset-build-direction-0.js | 7 +- .../paths-unset-build-direction-1.js | 7 +- ...d-inferred-type-from-referenced-project.js | 14 +- ...absolute-non-root-dependency-is-updated.js | 14 +- ...olution-from-d.ts-of-referenced-project.js | 7 +- ...project-correctly-with-preserveSymlinks.js | 7 +- ...-file-from-referenced-project-correctly.js | 7 +- ...-referenced-project-and-shared-is-first.js | 21 +- ...en-root-file-is-from-referenced-project.js | 21 +- .../transitiveReferences/builds-correctly.js | 7 +- ...es-absolute-non-root-dependency-updates.js | 14 +- ...-referenced-project-and-shared-is-first.js | 21 +- ...en-root-file-is-from-referenced-project.js | 21 +- ...-paths-base-first-to-second-incremental.js | 170 ++++++++-------- ...-paths-base-second-to-first-incremental.js | 170 ++++++++-------- .../paths-incremental-direction-0.js | 14 +- .../paths-incremental-direction-1.js | 14 +- .../paths-unset-incremental-direction-0.js | 7 +- .../paths-unset-incremental-direction-1.js | 7 +- ...g-when-module-reference-is-not-relative.js | 7 +- 33 files changed, 533 insertions(+), 478 deletions(-) diff --git a/tools/scripts/tsc/generate-options.ts b/tools/scripts/tsc/generate-options.ts index 1ef246d033db4..6ea0cbe1a0a68 100644 --- a/tools/scripts/tsc/generate-options.ts +++ b/tools/scripts/tsc/generate-options.ts @@ -546,7 +546,11 @@ export function generateOptionComparisons(model = options): string { if (declaration.strictFlag) return `${receiver}.GetStrictOptionValue(${field})`; return field; }; - return [optionValuesDiffer(goType(option), 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 } diff --git a/tools/scripts/tsc/options.test.ts b/tools/scripts/tsc/options.test.ts index ce6e2c04c1aae..699c6c93e649a 100644 --- a/tools/scripts/tsc/options.test.ts +++ b/tools/scripts/tsc/options.test.ts @@ -209,6 +209,7 @@ test("option comparisons use value equality for every stored option type", () => 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\)/); }); diff --git a/tsc/internal/execute/incremental/buildInfo.go b/tsc/internal/execute/incremental/buildInfo.go index 3ba3a7335a387..95b51a6b6e408 100644 --- a/tsc/internal/execute/incremental/buildInfo.go +++ b/tsc/internal/execute/incremental/buildInfo.go @@ -561,6 +561,12 @@ func (b *BuildInfo) GetCompilerOptions(buildInfoDirectory tspath.RootedDirectory 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 7e1e44cd64e8e..6ee17a2881843 100644 --- a/tsc/internal/execute/incremental/buildinfo_path_test.go +++ b/tsc/internal/execute/incremental/buildinfo_path_test.go @@ -39,7 +39,7 @@ func TestBuildInfoPathJSONRoundTrip(t *testing.T) { func TestBuildInfoCompilerOptionsJSONRoundTrip(t *testing.T) { t.Parallel() - const input = `{"options":{"paths":{"second":["b","a"],"first":[]},"rootDirs":["./src","../generated"],"typeRoots":["./types"],"types":[],"customConditions":["custom"]}}` + 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") @@ -50,6 +50,8 @@ func TestBuildInfoCompilerOptionsJSONRoundTrip(t *testing.T) { 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) diff --git a/tsc/internal/execute/incremental/snapshottobuildinfo.go b/tsc/internal/execute/incremental/snapshottobuildinfo.go index f07ee1462c067..0e5ce74eb26c3 100644 --- a/tsc/internal/execute/incremental/snapshottobuildinfo.go +++ b/tsc/internal/execute/incremental/snapshottobuildinfo.go @@ -331,6 +331,10 @@ func (t *toBuildInfo) setCompilerOptions() { 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/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 287c5f21deb68..d2a97eb02a722 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1435,7 +1435,6 @@ func TestBuildInheritedPathsBasePath(t *testing.T) { if build { args = []string{"--build", "producer", "--verbose"} } - const expectedDiff = "Changing the base of inherited paths leaves stale declaration module specifiers." test := &tscInput{ subScenario: "inherited paths base " + initialBase + " to " + nextBase + " " + core.IfElse(build, "build", "incremental"), cwd: project, @@ -1456,9 +1455,8 @@ func TestBuildInheritedPathsBasePath(t *testing.T) { edit: func(sys *TestSys) { sys.writeFileNoError(project+"/producer/tsconfig.json", config(nextBase)) }, - expectedDiff: expectedDiff, }, - {caption: "no change", expectedDiff: expectedDiff}, + noChange, {caption: "force rebuild", commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}}, noChange, }, diff --git a/tsc/internal/tsoptions/compileroptions_test.go b/tsc/internal/tsoptions/compileroptions_test.go index 6c4e91bc6733f..44598c6e9410d 100644 --- a/tsc/internal/tsoptions/compileroptions_test.go +++ b/tsc/internal/tsoptions/compileroptions_test.go @@ -309,6 +309,27 @@ func TestCompilerOptionInvalidationComparisons(t *testing.T) { } } +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{} diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 7bb434488fe73..967585efaba7d 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -408,6 +408,7 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { return (a == nil) == (b == nil) && slices.Equal(a, b) }) || + oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") || oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || @@ -478,6 +479,7 @@ func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *cor !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { return (a == nil) == (b == nil) && slices.Equal(a, b) }) || + oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") || oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums || oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || diff --git a/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline b/tsc/testdata/baselines/reference/fourslash/state/findAllRefsRootOfReferencedProjectDeclarationMaps.baseline index 154429e1a984a..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":"./","paths":{"common/*":["./common/*"]},"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", @@ -96,7 +96,8 @@ function testEvaluateKeyboardEvent() { "./common/*" ] }, - "tsBuildInfoFile": "./src.tsconfig.tsbuildinfo" + "tsBuildInfoFile": "./src.tsconfig.tsbuildinfo", + "pathsBasePath": "../src" }, "referencedMap": { "../src/terminal.ts": [ @@ -114,7 +115,7 @@ function testEvaluateKeyboardEvent() { "../src/common/input/keyboard.test.ts" ] ], - "size": 1741 + "size": 1766 } //// [/out/terminal.d.ts] *new* export {}; @@ -128,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":"./","paths":{"*":["../*"]}},"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", @@ -198,7 +199,8 @@ function foo() { "*": [ "../*" ] - } + }, + "pathsBasePath": "../src/common" }, "referencedMap": { "../src/common/input/keyboard.test.ts": [ @@ -206,7 +208,7 @@ function foo() { ] }, "latestChangedDtsFile": "./input/keyboard.test.d.ts", - "size": 1693 + "size": 1725 } //// [/src/common/input/keyboard.test.ts] *new* import { evaluateKeyboardEvent } from 'common/input/keyboard'; 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 index 7d2e6fc10a7b0..a2c736414fdfd 100644 --- 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 @@ -93,7 +93,7 @@ export declare function make(): Thing; 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -180,7 +180,8 @@ export declare const result: import("short").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/first" }, "referencedMap": { "../../factory.ts": [ @@ -191,7 +192,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1984 + "size": 2025 } producer/tsconfig.json:: @@ -280,99 +281,11 @@ Errors Files 1 producer/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../configs/first/thing").Thing; -+export declare const result: import("short").Thing; - - -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:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../configs/first/thing").Thing; -+export declare const result: import("short").Thing; - - -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] *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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -459,7 +372,8 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/second" }, "referencedMap": { "../../factory.ts": [ @@ -470,9 +384,89 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2001 + "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 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 index e1e2515bd1f7c..ca755b7e04c90 100644 --- 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 @@ -93,7 +93,7 @@ export declare function make(): Thing; 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -180,7 +180,8 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/second" }, "referencedMap": { "../../factory.ts": [ @@ -191,7 +192,7 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2001 + "size": 2043 } producer/tsconfig.json:: @@ -280,99 +281,11 @@ Errors Files 1 producer/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("../configs/first/thing").Thing; - - -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:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("../configs/first/thing").Thing; - - -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] *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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -459,7 +372,8 @@ export declare const result: import("short").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/first" }, "referencedMap": { "../../factory.ts": [ @@ -470,9 +384,89 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1984 + "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 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 index 4ffd55a52ec03..1c585b41306fa 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-0.js @@ -101,7 +101,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -189,7 +189,8 @@ export declare const result: import("short").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -200,7 +201,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1987 + "size": 2011 } producer/tsconfig.json:: @@ -308,7 +309,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -396,7 +397,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -407,7 +409,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: 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 index 788d2a3aef2d2..c1632e3fcd852 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/paths-build-direction-1.js @@ -101,7 +101,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -189,7 +189,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -200,7 +201,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: @@ -308,7 +309,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -396,7 +397,8 @@ export declare const result: import("short").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -407,7 +409,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1987 + "size": 2011 } producer/tsconfig.json:: 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 index c520d85afad24..f9134fdb28d3d 100644 --- 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 @@ -298,7 +298,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -386,7 +386,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -397,7 +398,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: 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 index 0bec12e8f2f90..14de2bedd79c5 100644 --- 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 @@ -101,7 +101,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -189,7 +189,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -200,7 +201,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/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 f51fa855598b7..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":"./","paths":{"@fluentui/*":["./packages/*/src"]}},"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", @@ -133,10 +133,11 @@ export {}; "@fluentui/*": [ "./packages/*/src" ] - } + }, + "pathsBasePath": "../../.." }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1319 + "size": 1346 } //// [/home/src/workspaces/project/packages/pkg2/lib/src/index.d.ts] *new* export declare function fn4(): import("@fluentui/pkg1").IThing; @@ -148,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":"./","paths":{"@fluentui/*":["./packages/*/src"]}},"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", @@ -208,7 +209,8 @@ export function fn4() { "@fluentui/*": [ "./packages/*/src" ] - } + }, + "pathsBasePath": "../../.." }, "referencedMap": { "../src/index.ts": [ @@ -216,7 +218,7 @@ export function fn4() { ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1541 + "size": 1568 } packages/pkg1/tsconfig.json:: 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 a792de135b5a7..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":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"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", @@ -121,7 +121,8 @@ export const value = myValue; "D:/work/deps/dep.d.ts" ] }, - "strict": true + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -129,7 +130,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1393 + "size": 1414 } tsconfig.json:: @@ -165,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":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"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 +227,8 @@ Found 1 error in src/index.ts:2 "D:/work/deps/dep.d.ts" ] }, - "strict": true + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -252,7 +254,7 @@ Found 1 error in src/index.ts:2 ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1564 + "size": 1585 } tsconfig.json:: 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 40c961e8299db..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,"moduleResolution":99,"paths":{"@common":["../common.d.ts"]},"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", @@ -262,7 +262,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); "../common.d.ts" ] }, - "strict": true + "strict": true, + "pathsBasePath": "./" }, "referencedMap": { "./in-js.d.ts": [ @@ -274,7 +275,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1774 + "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 f162382e4f07d..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":"./","paths":{"const":["./const"]}},"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", @@ -229,7 +229,8 @@ export {}; "const": [ "./const" ] - } + }, + "pathsBasePath": ".." }, "referencedMap": { "../index.ts": [ @@ -237,7 +238,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1441 + "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 39259b252270c..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":"./","paths":{"const":["./const"]}},"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", @@ -227,7 +227,8 @@ export {}; "const": [ "./const" ] - } + }, + "pathsBasePath": ".." }, "referencedMap": { "../index.ts": [ @@ -235,7 +236,7 @@ export {}; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1441 + "size": 1462 } packages/pkg2/tsconfig.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 3bccfc829a3c2..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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -210,7 +210,8 @@ export {}; "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -232,7 +233,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1791 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -429,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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -513,7 +514,8 @@ projects/server/src/server.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -535,7 +537,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1821 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -701,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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -776,7 +778,8 @@ projects/server/src/server.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -794,7 +797,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1654 + "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 0d7f16fd6fb45..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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -210,7 +210,8 @@ export {}; "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -232,7 +233,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1791 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -429,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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -513,7 +514,8 @@ projects/shared/dist/src/random.d.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -535,7 +537,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1821 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -701,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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -776,7 +778,8 @@ projects/shared/dist/src/logging.d.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -794,7 +797,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1654 + "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/transitiveReferences/builds-correctly.js b/tsc/testdata/baselines/reference/tsbuild/transitiveReferences/builds-correctly.js index ee4953ad93a70..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,"paths":{"@ref/*":["./*"]}},"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", @@ -209,7 +209,8 @@ X; "@ref/*": [ "./*" ] - } + }, + "pathsBasePath": "./" }, "referencedMap": { "./b.ts": [ @@ -217,7 +218,7 @@ X; ] }, "latestChangedDtsFile": "./b.d.ts", - "size": 1305 + "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 cd71777ea457e..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":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"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", @@ -125,7 +125,8 @@ export const value = myValue; "D:/work/deps/dep.d.ts" ] }, - "strict": true + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -133,7 +134,7 @@ export const value = myValue; ] }, "latestChangedDtsFile": "./src/index.d.ts", - "size": 1393 + "size": 1414 } Watch Registrations:: @@ -175,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":"./","paths":{"abs-dep":["D:/work/deps/dep.d.ts"]},"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", @@ -236,7 +237,8 @@ Output:: "D:/work/deps/dep.d.ts" ] }, - "strict": true + "strict": true, + "pathsBasePath": ".." }, "referencedMap": { "../src/index.ts": [ @@ -262,7 +264,7 @@ Output:: ] ], "latestChangedDtsFile": "./src/index.d.ts", - "size": 1564 + "size": 1585 } Watch Registrations:: 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 50765e2f45bdc..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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -214,7 +214,8 @@ export {}; "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -236,7 +237,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1791 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -450,7 +451,7 @@ projects/server/src/server.ts //// [/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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -534,7 +535,8 @@ projects/server/src/server.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -556,7 +558,7 @@ projects/server/src/server.ts "../../../shared/src/random.ts" ] ], - "size": 1821 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -743,7 +745,7 @@ projects/server/src/server.ts //// [/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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -818,7 +820,8 @@ projects/server/src/server.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -836,7 +839,7 @@ projects/server/src/server.ts "../../../shared/src/myClass.ts" ] ], - "size": 1654 + "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/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 582ad179a7809..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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -214,7 +214,8 @@ export {}; "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -236,7 +237,7 @@ export {}; "../../../shared/src/random.ts" ] ], - "size": 1791 + "size": 1815 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *new* export declare function log(str: string): void; @@ -450,7 +451,7 @@ projects/shared/dist/src/random.d.ts //// [/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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -534,7 +535,8 @@ projects/shared/dist/src/random.d.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -556,7 +558,7 @@ projects/shared/dist/src/random.d.ts "../../../shared/src/random.ts" ] ], - "size": 1821 + "size": 1845 } //// [/home/src/workspaces/solution/projects/shared/dist/src/logging.d.ts] *modified* export declare function log(str: string): void; @@ -743,7 +745,7 @@ projects/shared/dist/src/logging.d.ts //// [/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":"..","paths":{":shared/*":["./src/../../shared/src/*"]},"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", @@ -818,7 +820,8 @@ projects/shared/dist/src/logging.d.ts "./src/../../shared/src/*" ] }, - "rootDir": "../../.." + "rootDir": "../../..", + "pathsBasePath": "../.." }, "referencedMap": { "../../src/server.ts": [ @@ -836,7 +839,7 @@ projects/shared/dist/src/logging.d.ts "../../../shared/src/logging.ts" ] ], - "size": 1654 + "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/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 index 67e9e238e594f..2014fdfaa34c2 100644 --- 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 @@ -90,7 +90,7 @@ export declare function make(): Thing; 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -177,7 +177,8 @@ export declare const result: import("short").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/first" }, "referencedMap": { "../../factory.ts": [ @@ -188,7 +189,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1984 + "size": 2025 } producer/tsconfig.json:: @@ -256,6 +257,8 @@ Output:: 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. @@ -263,92 +266,11 @@ Errors Files 1 producer/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../configs/first/thing").Thing; -+export declare const result: import("short").Thing; - - -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:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("../configs/first/thing").Thing; -+export declare const result: import("short").Thing; - - -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] *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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -435,7 +357,8 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/second" }, "referencedMap": { "../../factory.ts": [ @@ -446,9 +369,82 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2001 + "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 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 index c1629c77e3aad..d1bb0c4d3609a 100644 --- 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 @@ -90,7 +90,7 @@ export declare function make(): Thing; 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -177,7 +177,8 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/second" }, "referencedMap": { "../../factory.ts": [ @@ -188,7 +189,7 @@ export declare const result: import("../configs/first/thing").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 2001 + "size": 2043 } producer/tsconfig.json:: @@ -256,6 +257,8 @@ Output:: 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. @@ -263,92 +266,11 @@ Errors Files 1 producer/factory.ts:1 1 producer/index.ts:1 - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("../configs/first/thing").Thing; - - -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:: - - -Diff:: Changing the base of inherited paths leaves stale declaration module specifiers. ---- nonIncremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/producer/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("short").Thing; -+export declare const result: import("../configs/first/thing").Thing; - - -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] *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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -435,7 +357,8 @@ export declare const result: import("short").Thing; ] }, "rootDir": "../../..", - "strict": true + "strict": true, + "pathsBasePath": "../../../configs/first" }, "referencedMap": { "../../factory.ts": [ @@ -446,9 +369,82 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1984 + "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 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 index bd18cadaa3b7a..64f4866e28931 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-0.js @@ -98,7 +98,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -186,7 +186,8 @@ export declare const result: import("short").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -197,7 +198,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1987 + "size": 2011 } producer/tsconfig.json:: @@ -293,7 +294,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -381,7 +382,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -392,7 +394,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: 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 index fa97231e3f483..9fb1ac50f3cb5 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/paths-incremental-direction-1.js @@ -98,7 +98,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -186,7 +186,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -197,7 +198,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: @@ -293,7 +294,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -381,7 +382,8 @@ export declare const result: import("short").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -392,7 +394,7 @@ export declare const result: import("short").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1987 + "size": 2011 } producer/tsconfig.json:: 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 index 2aed0ad80d47d..7395d30ec3b65 100644 --- 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 @@ -283,7 +283,7 @@ Errors Files 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -371,7 +371,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -382,7 +383,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/tsconfig.json:: 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 index 76accbce9f295..2c8a78361ac66 100644 --- 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 @@ -98,7 +98,7 @@ export declare class Thing { 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},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -186,7 +186,8 @@ export declare const result: import("renamed").Thing; }, "rootDir": "../../..", "strict": true, - "target": 7 + "target": 7, + "pathsBasePath": "../.." }, "referencedMap": { "../../../external/factory.ts": [ @@ -197,7 +198,7 @@ export declare const result: import("renamed").Thing; ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1991 + "size": 2015 } producer/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 70dc1647e506c..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":"./","paths":{"@alpha/*":["../alpha/*"]}},"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", @@ -113,7 +113,8 @@ export {}; "@alpha/*": [ "../alpha/*" ] - } + }, + "pathsBasePath": ".." }, "semanticDiagnosticsPerFile": [ [ @@ -134,7 +135,7 @@ export {}; ] ], "latestChangedDtsFile": "./b.d.ts", - "size": 1400 + "size": 1421 } beta/tsconfig.json:: From 8d2def87af4d0a4f23cba63bafdfdfee8e9a7a89 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:51:24 -0700 Subject: [PATCH 05/24] Test incremental module detection changes Module status can change without changing global-scope classification. Cover files where graph-based invalidation cannot detect that change. --- .../execute/tsctests/tscbuild_test.go | 36 +- ...uleDetection-CommonJS-build-direction-0.js | 261 ++++++++++ ...uleDetection-CommonJS-build-direction-1.js | 261 ++++++++++ ...ection-ambient-module-build-direction-0.js | 436 ++++++++++++++++ ...ection-ambient-module-build-direction-1.js | 484 ++++++++++++++++++ ...duleDetection-comment-build-direction-0.js | 301 +++++++++++ ...duleDetection-comment-build-direction-1.js | 301 +++++++++++ ...moduleDetection-empty-build-direction-0.js | 294 +++++++++++ ...moduleDetection-empty-build-direction-1.js | 294 +++++++++++ ...ection-CommonJS-incremental-direction-0.js | 241 +++++++++ ...ection-CommonJS-incremental-direction-1.js | 241 +++++++++ ...-ambient-module-incremental-direction-0.js | 414 +++++++++++++++ ...-ambient-module-incremental-direction-1.js | 457 +++++++++++++++++ ...tection-comment-incremental-direction-0.js | 280 ++++++++++ ...tection-comment-incremental-direction-1.js | 280 ++++++++++ ...Detection-empty-incremental-direction-0.js | 273 ++++++++++ ...Detection-empty-incremental-direction-1.js | 273 ++++++++++ 17 files changed, 5119 insertions(+), 8 deletions(-) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index d2a97eb02a722..a85a387295223 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1063,12 +1063,13 @@ func TestBuildExactOptionalPropertyTypes(t *testing.T) { } type compilerOptionChangeTest struct { - option string - name string - values [2]any - options map[string]any - files FileMap - roots []string + option string + name string + values [2]any + options map[string]any + files FileMap + roots []string + expectedDiff string } func TestBuildOptionChangeShapeSignature(t *testing.T) { @@ -1173,12 +1174,13 @@ func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { edits: []*tscEdit{ noChange, { - caption: "change " + test.option + " without changing source files", + caption: "change " + test.option + " without changing source files", + expectedDiff: test.expectedDiff, edit: func(sys *TestSys) { sys.writeFileNoError(configPath, config(test.values[1-direction])) }, }, - noChange, + {caption: noChange.caption, expectedDiff: test.expectedDiff}, { caption: "force rebuild with the same compiler options", commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}, @@ -1192,6 +1194,24 @@ func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { } } +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"}, + }, + } + for i := range tests { + tests[i].expectedDiff = "Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged." + } + testCompilerOptionChanges(t, tests) +} + func TestBuildTypeCheckingOptionChanges(t *testing.T) { t.Parallel() nullable := FileMap{"index.ts": "declare const input: string | undefined;\nexport const result = input;\n"} 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..f7914e40bf826 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-0.js @@ -0,0 +1,261 @@ +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,"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, + "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.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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ ++"use strict"; + exports.value = 1; +-export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ ++"use strict"; + exports.value = 1; +-export {}; + + +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] *modified* +exports.value = 1; +export {}; + +//// [/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..6a91875eec960 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-CommonJS-build-direction-1.js @@ -0,0 +1,261 @@ +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,"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, + "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.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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-"use strict"; + exports.value = 1; ++export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-"use strict"; + exports.value = 1; ++export {}; + + +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] *modified* +"use strict"; +exports.value = 1; + +//// [/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..5a73032c8cf2a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-0.js @@ -0,0 +1,436 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1343 +} + +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/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}],"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": "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 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,3 @@ + declare module 'input' { + const value: number; + } +-export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,3 @@ + declare module 'input' { + const value: number; + } +-export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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,"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, + "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": 1498 +} + +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..2ef8cfc1f0c54 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-ambient-module-build-direction-1.js @@ -0,0 +1,484 @@ +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,"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, + "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": 1498 +} + +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:: 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 + +//// [/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}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"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 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "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": 1542 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,4 @@ + declare module 'input' { + const value: number; + } ++export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,4 @@ + declare module 'input' { + const value: number; + } ++export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1343 +} + +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..9203531adc5a3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-0.js @@ -0,0 +1,301 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1219 +} + +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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1231 +} + +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..fdd94f8c1510f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-comment-build-direction-1.js @@ -0,0 +1,301 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1231 +} + +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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1219 +} + +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..be4d17d58828d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-0.js @@ -0,0 +1,294 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1106 +} + +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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1200 +} + +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..5be9a193a731f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleDetection-empty-build-direction-1.js @@ -0,0 +1,294 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1200 +} + +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'... + +[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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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' + + + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1106 +} + +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/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..234c626cd315f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-0.js @@ -0,0 +1,241 @@ +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,"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, + "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.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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ ++"use strict"; + exports.value = 1; +-export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ ++"use strict"; + exports.value = 1; +-export {}; + + +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] *modified* +exports.value = 1; +export {}; + +//// [/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..752ba56890996 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-CommonJS-incremental-direction-1.js @@ -0,0 +1,241 @@ +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,"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, + "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.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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-"use strict"; + exports.value = 1; ++export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.js ++++ incremental /home/src/workspaces/project/producer/dist/index.js +@@ -1,2 +1,2 @@ +-"use strict"; + exports.value = 1; ++export {}; + + +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] *modified* +"use strict"; +exports.value = 1; + +//// [/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..784a01236717a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-0.js @@ -0,0 +1,414 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1343 +} + +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/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":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\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": "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 + } + } + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1299 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,3 @@ + declare module 'input' { + const value: number; + } +-export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,4 +1,3 @@ + declare module 'input' { + const value: number; + } +-export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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,"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, + "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": 1498 +} + +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..9264c5e6cdfd2 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-ambient-module-incremental-direction-1.js @@ -0,0 +1,457 @@ +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,"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, + "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": 1498 +} + +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:: 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/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":"5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n","signature":"a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n","impliedNodeFormat":1}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"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 + } + } + ], + "fileIdsList": [ + [ + "../index.ts" + ] + ], + "options": { + "composite": true, + "emitDeclarationOnly": true, + "declaration": true, + "module": 99, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "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": 1542 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/tslibs/TS/Lib/lib.es2020.d.ts +Signatures:: +(used version) /home/src/tslibs/TS/Lib/lib.es2020.d.ts + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,4 @@ + declare module 'input' { + const value: number; + } ++export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,3 +1,4 @@ + declare module 'input' { + const value: number; + } ++export {}; +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "lib.es2020.d.ts": [ + "../index.ts" + ] + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1343 +} + +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..c668232452d0b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-0.js @@ -0,0 +1,280 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1219 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1231 +} + +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..a954fede409b3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-comment-incremental-direction-1.js @@ -0,0 +1,280 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1231 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1219 +} + +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..750510a9c9d2c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-0.js @@ -0,0 +1,273 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1106 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +0,0 @@ +-export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1200 +} + +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..e1adbf0b3eeff --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleDetection-empty-incremental-direction-1.js @@ -0,0 +1,273 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1200 +} + +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -0,0 +1,1 @@ ++export {}; + + +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] *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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1106 +} + +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:: From 2fc6cfe0ddb5d61956764b8cb0a124292235a3ab Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:54:29 -0700 Subject: [PATCH 06/24] Invalidate incremental state after module detection changes Graph comparisons cannot detect every external-module status change. Persist and compare module detection to refresh diagnostics and output. --- tools/scripts/tsc/options.ts | 3 + .../execute/tsctests/tscbuild_test.go | 3 - tsc/internal/tsoptions/options_generated.go | 5 + ...uleDetection-CommonJS-build-direction-0.js | 93 ++++++--- ...uleDetection-CommonJS-build-direction-1.js | 93 ++++++--- ...ection-ambient-module-build-direction-0.js | 186 ++++++------------ ...ection-ambient-module-build-direction-1.js | 177 ++--------------- ...duleDetection-comment-build-direction-0.js | 95 ++++----- ...duleDetection-comment-build-direction-1.js | 95 ++++----- ...moduleDetection-empty-build-direction-0.js | 95 ++++----- ...moduleDetection-empty-build-direction-1.js | 95 ++++----- ...ection-CommonJS-incremental-direction-0.js | 94 ++++++--- ...ection-CommonJS-incremental-direction-1.js | 94 ++++++--- ...-ambient-module-incremental-direction-0.js | 182 ++++++----------- ...-ambient-module-incremental-direction-1.js | 171 ++-------------- ...tection-comment-incremental-direction-0.js | 90 ++++----- ...tection-comment-incremental-direction-1.js | 90 ++++----- ...Detection-empty-incremental-direction-0.js | 90 ++++----- ...Detection-empty-incremental-direction-1.js | 90 ++++----- 19 files changed, 780 insertions(+), 1061 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index c32de2757a605..f14aa1d8b374d 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -629,6 +629,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.'), diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index a85a387295223..7cf0b0df5c472 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1206,9 +1206,6 @@ func TestBuildModuleDetectionOptionChanges(t *testing.T) { files: FileMap{"index.js": "exports.value = 1;\n"}, }, } - for i := range tests { - tests[i].expectedDiff = "Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged." - } testCompilerOptionChanges(t, tests) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 967585efaba7d..371a2dcda3823 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -394,6 +394,7 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory || oldOptions.JsxImportSource != newOptions.JsxImportSource || oldOptions.ModuleResolution != newOptions.ModuleResolution || + oldOptions.ModuleDetection != newOptions.ModuleDetection || oldOptions.NoErrorTruncation != newOptions.NoErrorTruncation || oldOptions.NoFallthroughCasesInSwitch != newOptions.NoFallthroughCasesInSwitch || oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || @@ -469,6 +470,7 @@ func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *cor oldOptions.MapRoot != newOptions.MapRoot || oldOptions.Module != newOptions.Module || oldOptions.ModuleResolution != newOptions.ModuleResolution || + oldOptions.ModuleDetection != newOptions.ModuleDetection || oldOptions.NewLine != newOptions.NewLine || oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) || @@ -605,6 +607,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f if options.ModuleResolution != 0 { fn(CommandLineCompilerOptionsMap.Get("moduleResolution"), options.ModuleResolution) } + if options.ModuleDetection != 0 { + fn(CommandLineCompilerOptionsMap.Get("moduleDetection"), options.ModuleDetection) + } if options.NewLine != 0 { fn(CommandLineCompilerOptionsMap.Get("newLine"), options.NewLine) } 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 index f7914e40bf826..947841c303a6e 100644 --- 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 @@ -68,7 +68,7 @@ export declare var value: 1; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -116,13 +116,14 @@ exports.value = 1; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1254 + "size": 1274 } producer/tsconfig.json:: @@ -180,24 +181,76 @@ Output:: [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/index.js] *modified* +exports.value = 1; +export {}; -//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ -+"use strict"; - exports.value = 1; --export {}; - - Edit [2]:: no change tsgo --build producer --verbose @@ -211,15 +264,6 @@ Output:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ -+"use strict"; - exports.value = 1; --export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -233,10 +277,7 @@ Output:: [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] *modified* -exports.value = 1; -export {}; - +//// [/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* 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 index 6a91875eec960..fb976e0bd42d1 100644 --- 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 @@ -68,7 +68,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -116,13 +116,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1254 + "size": 1274 } producer/tsconfig.json:: @@ -180,24 +181,76 @@ Output:: [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/index.js] *modified* +"use strict"; +exports.value = 1; -//// [/home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo] *mTime changed* +//// [/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:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --"use strict"; - exports.value = 1; -+export {}; - - Edit [2]:: no change tsgo --build producer --verbose @@ -211,15 +264,6 @@ Output:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --"use strict"; - exports.value = 1; -+export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -233,10 +277,7 @@ Output:: [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] *modified* -"use strict"; -exports.value = 1; - +//// [/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* 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 index 5a73032c8cf2a..a682f27182b8e 100644 --- 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 @@ -65,7 +65,7 @@ declare module 'input' { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -117,6 +117,7 @@ declare module 'input' { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, @@ -128,7 +129,7 @@ declare module 'input' { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1343 + "size": 1363 } producer/tsconfig.json:: @@ -176,7 +177,7 @@ Edit [1]:: change moduleDetection without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -185,8 +186,22 @@ Output:: [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":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -218,11 +233,11 @@ Output:: { "fileName": "../index.ts", "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", - "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\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": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", "impliedNodeFormat": 1 } } @@ -233,74 +248,67 @@ Output:: "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": 1299 + "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 -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,3 @@ - declare module 'input' { - const value: number; - } --export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,3 @@ - declare module 'input' { - const value: number; - } --export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -322,85 +330,9 @@ Output:: 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,"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, - "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": 1498 -} +//// [/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:: 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 index 2ef8cfc1f0c54..cda988e5ce02f 100644 --- 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 @@ -74,7 +74,7 @@ declare module 'input' { 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,"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"} +{"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", @@ -121,6 +121,7 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, @@ -144,7 +145,7 @@ export {}; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1498 + "size": 1518 } producer/tsconfig.json:: @@ -205,7 +206,7 @@ Edit [1]:: change moduleDetection without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -214,16 +215,13 @@ Output:: [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; +} //// [/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}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"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"} +{"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", @@ -255,11 +253,11 @@ Found 1 error in producer/index.ts: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", + "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": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", "impliedNodeFormat": 1 } } @@ -275,6 +273,7 @@ Found 1 error in producer/index.ts:1 "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, @@ -285,99 +284,31 @@ Found 1 error in producer/index.ts:1 "../index.ts" ] }, - "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": 1542 + "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 -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,4 @@ - declare module 'input' { - const value: number; - } -+export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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 - +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,4 @@ - declare module 'input' { - const value: number; - } -+export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -391,77 +322,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "lib.es2020.d.ts": [ - "../index.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1343 -} +//// [/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:: 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 index 9203531adc5a3..140dc66b4593f 100644 --- 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 @@ -62,7 +62,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,13 +109,14 @@ declare const console: { log(msg: any): void; }; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1219 + "size": 1239 } producer/tsconfig.json:: @@ -172,59 +173,11 @@ Output:: [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:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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' - - - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -271,13 +224,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1231 + "size": 1251 } producer/tsconfig.json:: @@ -288,6 +242,43 @@ 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 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 index fdd94f8c1510f..33c1711d265a0 100644 --- 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 @@ -63,7 +63,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -110,13 +110,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1231 + "size": 1251 } producer/tsconfig.json:: @@ -173,58 +174,10 @@ Output:: [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:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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' - - - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -271,13 +224,14 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1219 + "size": 1239 } producer/tsconfig.json:: @@ -288,6 +242,43 @@ 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 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 index be4d17d58828d..175336b7fe525 100644 --- 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 @@ -61,7 +61,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -103,13 +103,14 @@ declare const console: { log(msg: any): void; }; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1106 + "size": 1126 } producer/tsconfig.json:: @@ -165,59 +166,11 @@ Output:: [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:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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' - - - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -264,13 +217,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1200 + "size": 1220 } producer/tsconfig.json:: @@ -281,6 +235,43 @@ 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 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 index 5be9a193a731f..1a58d333d1c15 100644 --- 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 @@ -62,7 +62,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -109,13 +109,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1200 + "size": 1220 } producer/tsconfig.json:: @@ -172,58 +173,10 @@ Output:: [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:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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' - - - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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] *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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -265,15 +218,53 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1106 + "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 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 index 234c626cd315f..c2d1ee291d3b5 100644 --- 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 @@ -64,7 +64,7 @@ export declare var value: 1; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,13 +112,14 @@ exports.value = 1; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1254 + "size": 1274 } producer/tsconfig.json:: @@ -167,21 +168,78 @@ Edit [1]:: change moduleDetection without changing source files 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:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ -+"use strict"; - exports.value = 1; --export {}; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -193,15 +251,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ -+"use strict"; - exports.value = 1; --export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -215,10 +264,7 @@ Output:: [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] *modified* -exports.value = 1; -export {}; - +//// [/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* 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 index 752ba56890996..762d0e416fd30 100644 --- 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 @@ -64,7 +64,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,13 +112,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1254 + "size": 1274 } producer/tsconfig.json:: @@ -167,21 +168,78 @@ Edit [1]:: change moduleDetection without changing source files 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:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --"use strict"; - exports.value = 1; -+export {}; - - Edit [2]:: no change tsgo --project producer --listEmittedFiles @@ -193,15 +251,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.js -+++ incremental /home/src/workspaces/project/producer/dist/index.js -@@ -1,2 +1,2 @@ --"use strict"; - exports.value = 1; -+export {}; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -215,10 +264,7 @@ Output:: [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] *modified* -"use strict"; -exports.value = 1; - +//// [/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* 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 index 784a01236717a..df7ac39e9e870 100644 --- 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 @@ -60,7 +60,7 @@ declare module 'input' { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -112,6 +112,7 @@ declare module 'input' { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, @@ -123,7 +124,7 @@ declare module 'input' { ] }, "latestChangedDtsFile": "./index.d.ts", - "size": 1343 + "size": 1363 } producer/tsconfig.json:: @@ -169,11 +170,26 @@ Edit [1]:: change moduleDetection without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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":"b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n","impliedNodeFormat":1}],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -205,11 +221,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "5db005431628d0037c2fc136bf7654c7-declare module 'input' { export const value: number; }\n", - "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\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": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", + "signature": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", "impliedNodeFormat": 1 } } @@ -220,73 +236,61 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1299 + "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 -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,3 @@ - declare module 'input' { - const value: number; - } --export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,4 +1,3 @@ - declare module 'input' { - const value: number; - } --export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -307,85 +311,9 @@ Output:: 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,"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, - "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": 1498 -} +//// [/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:: 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 index 9264c5e6cdfd2..3206f53b281c6 100644 --- 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 @@ -69,7 +69,7 @@ declare module 'input' { 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,"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"} +{"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", @@ -116,6 +116,7 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, @@ -139,7 +140,7 @@ export {}; ] ], "latestChangedDtsFile": "./index.d.ts", - "size": 1498 + "size": 1518 } producer/tsconfig.json:: @@ -193,19 +194,17 @@ Edit [1]:: change moduleDetection without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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; +} //// [/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}],"fileIdsList":[[2]],"options":{"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[1,1]],"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"} +{"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", @@ -237,11 +236,11 @@ Found 1 error in producer/index.ts: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", + "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": "a6c9c8115f87b440d148380a0edeb889-declare module 'input' {\n const value: number;\n}\nexport {};\n", + "signature": "b39b85e7a6424b9042daed7bafcf3d0d-declare module 'input' {\n const value: number;\n}\n", "impliedNodeFormat": 1 } } @@ -257,6 +256,7 @@ Found 1 error in producer/index.ts:1 "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, @@ -267,93 +267,30 @@ Found 1 error in producer/index.ts:1 "../index.ts" ] }, - "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": 1542 + "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 -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,4 @@ - declare module 'input' { - const value: number; - } -+export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,3 +1,4 @@ - declare module 'input' { - const value: number; - } -+export {}; ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -366,77 +303,9 @@ Output:: [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,"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, - "outDir": "./", - "rootDir": "..", - "strict": true, - "target": 7 - }, - "referencedMap": { - "lib.es2020.d.ts": [ - "../index.ts" - ] - }, - "latestChangedDtsFile": "./index.d.ts", - "size": 1343 -} +//// [/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:: 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 index c668232452d0b..0015fb0afd3ea 100644 --- 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 @@ -57,7 +57,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,13 +104,14 @@ declare const console: { log(msg: any): void; }; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1219 + "size": 1239 } producer/tsconfig.json:: @@ -158,54 +159,13 @@ Edit [1]:: change moduleDetection without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -252,13 +212,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1231 + "size": 1251 } producer/tsconfig.json:: @@ -269,6 +230,41 @@ 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 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 index a954fede409b3..e95a80ef6b338 100644 --- 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 @@ -58,7 +58,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -105,13 +105,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1231 + "size": 1251 } producer/tsconfig.json:: @@ -159,53 +160,12 @@ Edit [1]:: change moduleDetection without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -252,13 +212,14 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1219 + "size": 1239 } producer/tsconfig.json:: @@ -269,6 +230,41 @@ 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 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 index 750510a9c9d2c..7419b85fbd8a7 100644 --- 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 @@ -56,7 +56,7 @@ 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -98,13 +98,14 @@ declare const console: { log(msg: any): void; }; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1106 + "size": 1126 } producer/tsconfig.json:: @@ -151,54 +152,13 @@ Edit [1]:: change moduleDetection without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +0,0 @@ --export {}; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -245,13 +205,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1200 + "size": 1220 } producer/tsconfig.json:: @@ -262,6 +223,41 @@ 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 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 index e1adbf0b3eeff..9586e94e76420 100644 --- 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 @@ -57,7 +57,7 @@ declare const console: { log(msg: any): void; }; 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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -104,13 +104,14 @@ export {}; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 3, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1200 + "size": 1220 } producer/tsconfig.json:: @@ -158,53 +159,12 @@ Edit [1]:: change moduleDetection without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing moduleDetection does not invalidate module markers or semantic diagnostics when global-scope classification is unchanged. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -0,0 +1,1 @@ -+export {}; - - -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'... - +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,"outDir":"./","rootDir":"..","strict":true,"target":7},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -246,15 +206,51 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleDetection": 2, "outDir": "./", "rootDir": "..", "strict": true, "target": 7 }, "latestChangedDtsFile": "./index.d.ts", - "size": 1106 + "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 From d9e920d2ee126bb2f715feba82c02b24c752ece3 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:55:13 -0700 Subject: [PATCH 07/24] Test incremental declaration specifiers after module suffix changes --- .../execute/tsctests/tscbuild_test.go | 16 + .../moduleSuffixes-build-direction-0.js | 585 ++++++++++++++++++ .../moduleSuffixes-build-direction-1.js | 585 ++++++++++++++++++ .../moduleSuffixes-incremental-direction-0.js | 571 +++++++++++++++++ .../moduleSuffixes-incremental-direction-1.js | 571 +++++++++++++++++ 5 files changed, 2328 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 7cf0b0df5c472..ea0a2bc1888eb 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1262,6 +1262,22 @@ func TestBuildTypeCheckingOptionChanges(t *testing.T) { }) } +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", + }, + expectedDiff: "Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..44d13bd91003e --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js @@ -0,0 +1,585 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +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/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":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").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,"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.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": "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.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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/factory.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input.native").Value; ++export declare const result: import("./input").Value; + + +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' + + + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input.native").Value; ++export declare const result: import("./input").Value; + + +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] *modified* +export declare const result: import("./input.native").Value; + +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +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..9fb69c894540b --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js @@ -0,0 +1,585 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +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/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":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").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,"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.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": "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.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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/factory.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input").Value; ++export declare const result: import("./input.native").Value; + + +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' + + + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input").Value; ++export declare const result: import("./input.native").Value; + + +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] *modified* +export declare const result: import("./input").Value; + +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +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/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..f11dc6c3d4640 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js @@ -0,0 +1,571 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +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/tsconfig.tsbuildinfo +//// [/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":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").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,"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.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": "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.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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/factory.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input.native").Value; ++export declare const result: import("./input").Value; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input.native").Value; ++export declare const result: import("./input").Value; + + +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] *modified* +export declare const result: import("./input.native").Value; + +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +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..0304009c684d3 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js @@ -0,0 +1,571 @@ +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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.native.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +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/tsconfig.tsbuildinfo +//// [/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":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").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,"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.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": "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.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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.d.ts", + "size": 2129 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +*refresh* /home/src/workspaces/project/producer/factory.ts +Signatures:: +(computed .d.ts) /home/src/workspaces/project/producer/factory.ts + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input").Value; ++export declare const result: import("./input.native").Value; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: import("./input").Value; ++export declare const result: import("./input.native").Value; + + +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] *modified* +export declare const result: import("./input").Value; + +//// [/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,"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, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "referencedMap": { + "../factory.ts": [ + "../input.ts" + ], + "../index.ts": [ + "../factory.ts" + ] + }, + "latestChangedDtsFile": "./input.native.d.ts", + "size": 2129 +} + +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:: From 6735d91bb065809d92b2c505f887726896aca540 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:58:36 -0700 Subject: [PATCH 08/24] Invalidate incremental state after module suffix changes --- tools/scripts/tsc/generate-options.ts | 3 +- tools/scripts/tsc/options.test.ts | 2 + tools/scripts/tsc/options.ts | 3 + .../execute/tsctests/tscbuild_test.go | 1 - tsc/internal/tsoptions/options_generated.go | 464 +++++++++++++----- .../moduleSuffixes-build-direction-0.js | 58 +-- .../moduleSuffixes-build-direction-1.js | 58 +-- .../moduleSuffixes-incremental-direction-0.js | 59 +-- .../moduleSuffixes-incremental-direction-1.js | 59 +-- 9 files changed, 478 insertions(+), 229 deletions(-) diff --git a/tools/scripts/tsc/generate-options.ts b/tools/scripts/tsc/generate-options.ts index 6ea0cbe1a0a68..2536f2b364bb5 100644 --- a/tools/scripts/tsc/generate-options.ts +++ b/tools/scripts/tsc/generate-options.ts @@ -555,7 +555,8 @@ export function generateOptionComparisons(model = options): string { 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") diff --git a/tools/scripts/tsc/options.test.ts b/tools/scripts/tsc/options.test.ts index 699c6c93e649a..a2fdf8096c8c2 100644 --- a/tools/scripts/tsc/options.test.ts +++ b/tools/scripts/tsc/options.test.ts @@ -212,6 +212,8 @@ test("option comparisons use value equality for every stored option type", () => 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 f14aa1d8b374d..501d3cc22a5de 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -616,6 +616,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."), diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index ea0a2bc1888eb..7b96c62564f3b 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1273,7 +1273,6 @@ func TestBuildModuleSuffixesOptionChanges(t *testing.T) { "input.ts": "export class Value { private field = 1; }\n", "input.native.ts": "export class Value { private field = 2; }\n", }, - expectedDiff: "Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included.", }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 371a2dcda3823..4edb6f1353440 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -374,59 +374,165 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions || - 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.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) || - oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || - oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages || - oldOptions.ErasableSyntaxOnly != newOptions.ErasableSyntaxOnly || - oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes || - oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || - oldOptions.IsolatedModules != newOptions.IsolatedModules || - oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations || - oldOptions.Jsx != newOptions.Jsx || - oldOptions.JsxFactory != newOptions.JsxFactory || - oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory || - oldOptions.JsxImportSource != newOptions.JsxImportSource || - oldOptions.ModuleResolution != newOptions.ModuleResolution || - oldOptions.ModuleDetection != newOptions.ModuleDetection || - 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.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { - return (a == nil) == (b == nil) && slices.Equal(a, b) - }) || - oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") || - oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || - oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || - oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || - (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) || - 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.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) || - (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) || - 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.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.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.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports { + return true + } + if oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports { + return true + } + if oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions { + 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.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 { @@ -436,10 +542,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 { @@ -449,64 +564,180 @@ func CompilerOptionsAffectEmit(oldOptions *core.CompilerOptions, newOptions *cor if oldOptions == nil || newOptions == nil { return true } - return oldOptions.AllowArbitraryExtensions != newOptions.AllowArbitraryExtensions || - oldOptions.AllowImportingTsExtensions != newOptions.AllowImportingTsExtensions || - oldOptions.AssumeChangesOnlyAffectDirectDependencies != newOptions.AssumeChangesOnlyAffectDirectDependencies || - (oldOptions.CustomConditions == nil) != (newOptions.CustomConditions == nil) || !slices.Equal(oldOptions.CustomConditions, newOptions.CustomConditions) || - oldOptions.EmitBOM != newOptions.EmitBOM || - oldOptions.EmitDecoratorMetadata != newOptions.EmitDecoratorMetadata || - oldOptions.DeclarationDir != newOptions.DeclarationDir || - oldOptions.DeduplicatePackages != newOptions.DeduplicatePackages || - oldOptions.ExactOptionalPropertyTypes != newOptions.ExactOptionalPropertyTypes || - oldOptions.ExperimentalDecorators != newOptions.ExperimentalDecorators || - oldOptions.IsolatedModules != newOptions.IsolatedModules || - oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations || - oldOptions.ImportHelpers != newOptions.ImportHelpers || - oldOptions.InlineSources != newOptions.InlineSources || - oldOptions.Jsx != newOptions.Jsx || - oldOptions.JsxFactory != newOptions.JsxFactory || - oldOptions.JsxFragmentFactory != newOptions.JsxFragmentFactory || - oldOptions.JsxImportSource != newOptions.JsxImportSource || - oldOptions.MapRoot != newOptions.MapRoot || - oldOptions.Module != newOptions.Module || - oldOptions.ModuleResolution != newOptions.ModuleResolution || - oldOptions.ModuleDetection != newOptions.ModuleDetection || - oldOptions.NewLine != newOptions.NewLine || - oldOptions.GetStrictOptionValue(oldOptions.NoImplicitAny) != newOptions.GetStrictOptionValue(newOptions.NoImplicitAny) || - oldOptions.GetStrictOptionValue(oldOptions.NoImplicitThis) != newOptions.GetStrictOptionValue(newOptions.NoImplicitThis) || - oldOptions.NoEmitHelpers != newOptions.NoEmitHelpers || - oldOptions.NoUncheckedIndexedAccess != newOptions.NoUncheckedIndexedAccess || - oldOptions.NoEmitOnError != newOptions.NoEmitOnError || - oldOptions.OutDir != newOptions.OutDir || - !oldOptions.Paths.EqualFunc(newOptions.Paths, func(a, b []string) bool { - return (a == nil) == (b == nil) && slices.Equal(a, b) - }) || - oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") || - oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums || - oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports || - oldOptions.ResolvePackageJsonImports != newOptions.ResolvePackageJsonImports || - oldOptions.RemoveComments != newOptions.RemoveComments || - oldOptions.RewriteRelativeImportExtensions != newOptions.RewriteRelativeImportExtensions || - oldOptions.ReactNamespace != newOptions.ReactNamespace || - oldOptions.RootDir != newOptions.RootDir || - (oldOptions.RootDirs == nil) != (newOptions.RootDirs == nil) || !slices.Equal(oldOptions.RootDirs, newOptions.RootDirs) || - 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.StripInternal != newOptions.StripInternal || - oldOptions.SourceRoot != newOptions.SourceRoot || - oldOptions.Target != newOptions.Target || - oldOptions.TsBuildInfoFile != newOptions.TsBuildInfoFile || - (oldOptions.TypeRoots == nil) != (newOptions.TypeRoots == nil) || !slices.Equal(oldOptions.TypeRoots, newOptions.TypeRoots) || - (oldOptions.Types == nil) != (newOptions.Types == nil) || !slices.Equal(oldOptions.Types, newOptions.Types) || - oldOptions.UseDefineForClassFields != newOptions.UseDefineForClassFields || - oldOptions.GetStrictOptionValue(oldOptions.UseUnknownInCatchVariables) != newOptions.GetStrictOptionValue(newOptions.UseUnknownInCatchVariables) || - 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. @@ -607,6 +838,9 @@ func ForEachCompilerOptionAffectingBuildInfo(options *core.CompilerOptions, fn f 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) } 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 index 44d13bd91003e..cc3ad19246582 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-0.js @@ -94,7 +94,7 @@ export declare class Value { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -191,6 +191,10 @@ export declare class Value { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -205,7 +209,7 @@ export declare class Value { ] }, "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: @@ -274,8 +278,11 @@ Output:: [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":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -338,11 +345,11 @@ Output:: { "fileName": "../index.ts", "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", - "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\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": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", "impliedNodeFormat": 1 } }, @@ -372,6 +379,10 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -385,23 +396,20 @@ Output:: "../factory.ts" ] }, - "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "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 - - -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input.native").Value; -+export declare const result: import("./input").Value; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -417,14 +425,6 @@ Output:: -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input.native").Value; -+export declare const result: import("./input").Value; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -438,13 +438,11 @@ Output:: [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] *modified* -export declare const result: import("./input.native").Value; - +//// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -541,6 +539,10 @@ export declare const result: import("./input.native").Value; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -555,7 +557,7 @@ export declare const result: import("./input.native").Value; ] }, "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: 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 index 9fb69c894540b..8387ba1a7ff43 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/moduleSuffixes-build-direction-1.js @@ -94,7 +94,7 @@ export declare class Value { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -191,6 +191,10 @@ export declare class Value { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -205,7 +209,7 @@ export declare class Value { ] }, "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: @@ -274,8 +278,11 @@ Output:: [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":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -338,11 +345,11 @@ Output:: { "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", + "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": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", "impliedNodeFormat": 1 } }, @@ -372,6 +379,10 @@ Output:: "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -385,23 +396,20 @@ Output:: "../factory.ts" ] }, - "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "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 - - -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input").Value; -+export declare const result: import("./input.native").Value; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -417,14 +425,6 @@ Output:: -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input").Value; -+export declare const result: import("./input.native").Value; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -438,13 +438,11 @@ Output:: [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] *modified* -export declare const result: import("./input").Value; - +//// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -541,6 +539,10 @@ export declare const result: import("./input").Value; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -555,7 +557,7 @@ export declare const result: import("./input").Value; ] }, "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: 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 index f11dc6c3d4640..2ee0c11ea5f8e 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-0.js @@ -92,7 +92,7 @@ export declare class Value { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -189,6 +189,10 @@ export declare class Value { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -203,7 +207,7 @@ export declare class Value { ] }, "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: @@ -263,9 +267,13 @@ Edit [1]:: change moduleSuffixes without changing source files 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":"8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -328,11 +336,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "fileName": "../index.ts", "version": "b279346232fdfce139138519c257ae08-import { make } from './factory';\nexport const result = make();\n", - "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\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": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", + "signature": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", "impliedNodeFormat": 1 } }, @@ -362,6 +370,10 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -375,23 +387,20 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "../factory.ts" ] }, - "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "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 - - -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input.native").Value; -+export declare const result: import("./input").Value; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -405,14 +414,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input.native").Value; -+export declare const result: import("./input").Value; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -426,13 +427,11 @@ Output:: [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] *modified* -export declare const result: import("./input.native").Value; - +//// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -529,6 +528,10 @@ export declare const result: import("./input.native").Value; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -543,7 +546,7 @@ export declare const result: import("./input.native").Value; ] }, "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: 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 index 0304009c684d3..2bfd672ffc4f1 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/moduleSuffixes-incremental-direction-1.js @@ -92,7 +92,7 @@ export declare class Value { } //// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -189,6 +189,10 @@ export declare class Value { "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -203,7 +207,7 @@ export declare class Value { ] }, "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: @@ -263,9 +267,13 @@ Edit [1]:: change moduleSuffixes without changing source files 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":"075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.d.ts"} +{"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", @@ -328,11 +336,11 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo { "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", + "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": "075e9983d4f80c5c54574c3ca99e8023-export declare const result: import(\"./input.native\").Value;\n", + "signature": "8e3c9c0b7b76f1841ce98f92678a7b3a-export declare const result: import(\"./input\").Value;\n", "impliedNodeFormat": 1 } }, @@ -362,6 +370,10 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -375,23 +387,20 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "../factory.ts" ] }, - "latestChangedDtsFile": "./input.d.ts", - "size": 2129 + "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 - - -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input").Value; -+export declare const result: import("./input.native").Value; +(stored at emit) /home/src/workspaces/project/producer/index.ts Edit [2]:: no change @@ -405,14 +414,6 @@ SemanticDiagnostics:: Signatures:: -Diff:: Changing moduleSuffixes leaves inferred declaration module specifiers stale when both alternative files are already included. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: import("./input").Value; -+export declare const result: import("./input.native").Value; - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -426,13 +427,11 @@ Output:: [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] *modified* -export declare const result: import("./input").Value; - +//// [/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,"outDir":"./","rootDir":"..","strict":true,"target":7},"referencedMap":[[3,1],[4,2]],"latestChangedDtsFile":"./input.native.d.ts"} +{"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", @@ -529,6 +528,10 @@ export declare const result: import("./input").Value; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + "", + ".native" + ], "outDir": "./", "rootDir": "..", "strict": true, @@ -543,7 +546,7 @@ export declare const result: import("./input").Value; ] }, "latestChangedDtsFile": "./input.native.d.ts", - "size": 2129 + "size": 2161 } producer/tsconfig.json:: From 30e8544ff0690a6412ea06a858eed4c70eeb7550 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 20:59:04 -0700 Subject: [PATCH 09/24] Test incremental target-dependent diagnostics --- .../execute/tsctests/tscbuild_test.go | 11 + .../target-build-direction-0.js | 433 ++++++++++++++++++ .../target-build-direction-1.js | 398 ++++++++++++++++ .../target-incremental-direction-0.js | 406 ++++++++++++++++ .../target-incremental-direction-1.js | 376 +++++++++++++++ 5 files changed, 1624 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 7b96c62564f3b..5781c3147d720 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1277,6 +1277,17 @@ func TestBuildModuleSuffixesOptionChanges(t *testing.T) { }) } +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"}, + expectedDiff: "Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..9ba24fce1126a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js @@ -0,0 +1,433 @@ +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:: 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 + +//// [/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},"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": 7 + }, + "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:: +Signatures:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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..e5df5cd9438b0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js @@ -0,0 +1,398 @@ +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:: 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":"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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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/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..e1cd558087690 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js @@ -0,0 +1,406 @@ +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:: 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":7},"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": 7 + }, + "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:: +Signatures:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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..070cdd20b090a --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js @@ -0,0 +1,376 @@ +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:: 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":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": "8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "signature": "8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\ndeclare var Symbol: SymbolConstructor;\ninterface Symbol {\n readonly [Symbol.toStringTag]: string;\n}\ndeclare const console: { log(msg: any): void; };", + "affectsGlobalScope": true, + "impliedNodeFormat": "CommonJS", + "original": { + "version": "8859c12c614ce56ba9a18e58384a198f-/// \ninterface Boolean {}\ninterface Function {}\ninterface CallableFunction {}\ninterface NewableFunction {}\ninterface IArguments {}\ninterface Number { toExponential: any; }\ninterface Object {}\ninterface RegExp {}\ninterface String { charAt: any; }\ninterface Array { length: number; [n: number]: T; }\ninterface ReadonlyArray {}\ninterface SymbolConstructor {\n (desc?: string | number): symbol;\n for(name: string): symbol;\n readonly toStringTag: symbol;\n}\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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1250 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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:: From a602fd3e864797a993da1847cbb8509bc63e536a Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:01:46 -0700 Subject: [PATCH 10/24] Invalidate semantic diagnostics after target changes --- tools/scripts/tsc/options.ts | 1 + .../execute/tsctests/tscbuild_test.go | 3 +- tsc/internal/tsoptions/options_generated.go | 3 + .../target-build-direction-0.js | 131 ++-------------- .../target-build-direction-1.js | 143 ++++++------------ .../target-incremental-direction-0.js | 124 +-------------- .../target-incremental-direction-1.js | 138 +++++------------ 7 files changed, 103 insertions(+), 440 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 501d3cc22a5de..9edc677c51a22 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -1216,6 +1216,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", shortName: "t", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, showInSimplifiedHelpView: true, diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 5781c3147d720..32fb37c4285d1 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1282,8 +1282,7 @@ func TestBuildTargetOptionDiagnostics(t *testing.T) { testCompilerOptionChanges(t, []compilerOptionChangeTest{ { option: "target", values: [2]any{"es2015", "es2020"}, - files: FileMap{"index.ts": "export const result = 1n;\n"}, - expectedDiff: "Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics.", + files: FileMap{"index.ts": "export const result = 1n;\n"}, }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 4edb6f1353440..3985a8af45fb8 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -511,6 +511,9 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, 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 } 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 index 9ba24fce1126a..49edf94b19a6a 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-0.js @@ -197,7 +197,7 @@ Edit [1]:: change target without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -206,16 +206,8 @@ Output:: [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":7},"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"} +{"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", @@ -267,80 +259,29 @@ Found 1 error in producer/index.ts:1 "strict": true, "target": 7 }, - "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 + "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:: -Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -producer/index.ts:1:23 - error TS2737: BigInt literals are not available when targeting lower than ES2020. - -1 export const result = 1n; -   ~~ - +[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' -Found 1 error in producer/index.ts:1 -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -355,62 +296,8 @@ Output:: [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] *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 -} +//// [/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:: 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 index e5df5cd9438b0..788395726af96 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/target-build-direction-1.js @@ -162,7 +162,7 @@ Edit [1]:: change target without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -171,8 +171,16 @@ Output:: [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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -224,53 +232,56 @@ Output:: "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": 1250 + "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:: -Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -293,76 +304,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index e1cd558087690..3c237455e84e1 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-0.js @@ -185,19 +185,11 @@ Edit [1]:: change target without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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":7},"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"} +{"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", @@ -249,74 +241,28 @@ Found 1 error in producer/index.ts:1 "strict": true, "target": 7 }, - "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 + "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:: -Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -330,62 +276,8 @@ Output:: [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] *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 -} +//// [/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:: 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 index 070cdd20b090a..3b5421f1b4042 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/target-incremental-direction-1.js @@ -155,11 +155,19 @@ Edit [1]:: change target without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -211,52 +219,50 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1250 + "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:: -Diff:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing target with explicit unchanged libraries retains the previous BigInt syntax diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,76 +284,8 @@ Output:: 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] *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 -} +//// [/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:: From 0b91a150986da7f4ffc4137a1d9ae9931ca51be4 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:02:16 -0700 Subject: [PATCH 11/24] Test incremental module-dependent diagnostics --- .../execute/tsctests/tscbuild_test.go | 20 + ...ule-import-attributes-build-direction-0.js | 727 +++++++++++++++++ ...ule-import-attributes-build-direction-1.js | 744 ++++++++++++++++++ ...odule-top-level-await-build-direction-0.js | 398 ++++++++++ ...odule-top-level-await-build-direction-1.js | 433 ++++++++++ ...port-attributes-incremental-direction-0.js | 697 ++++++++++++++++ ...port-attributes-incremental-direction-1.js | 714 +++++++++++++++++ ...top-level-await-incremental-direction-0.js | 376 +++++++++ ...top-level-await-incremental-direction-1.js | 406 ++++++++++ 9 files changed, 4515 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 32fb37c4285d1..90817015920ea 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1287,6 +1287,26 @@ func TestBuildTargetOptionDiagnostics(t *testing.T) { }) } +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"}, + expectedDiff: "Changing module retains the previous top-level-await diagnostics.", + }, + { + 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}`, + }, + expectedDiff: "Changing module retains the previous import-attribute diagnostics.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..8473649f4aaf9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-0.js @@ -0,0 +1,727 @@ +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'. + +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":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"]}]]],"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" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1463 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,9 +1,4 @@ + 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 ++ ++Found 1 error. + + +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. + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,9 +1,4 @@ + 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 ++ ++Found 1 error. + + +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..0e5f96a92838f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-import-attributes-build-direction-1.js @@ -0,0 +1,744 @@ +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'. +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":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"]},{"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": 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" + ] + }, + { + "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": 1630 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,4 +1,9 @@ + error TS2318: Cannot find global type 'ImportAttributes'. +- +-Found 1 error. ++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 + + +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 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,4 +1,9 @@ + error TS2318: Cannot find global type 'ImportAttributes'. +- +-Found 1 error. ++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 + + +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..2883ef1afff4d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-0.js @@ -0,0 +1,398 @@ +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:: 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":"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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1253 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..ea718f8d290db --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/module-top-level-await-build-direction-1.js @@ -0,0 +1,433 @@ +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:: 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 + +//// [/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},"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": 99, + "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": 1457 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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/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..10ef8923177c8 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-0.js @@ -0,0 +1,697 @@ +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'. +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":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"]}]]],"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" + ] + } + ] + ] + ], + "latestChangedDtsFile": "./index.d.ts", + "size": 1463 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,9 +1,4 @@ + 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 ++ ++Found 1 error. + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: DiagnosticsPresent_OutputsGenerated +Output:: +error TS2318: Cannot find global type 'ImportAttributes'. + +Found 1 error. + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,9 +1,4 @@ + 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 ++ ++Found 1 error. + + +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..0193a1f366807 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-import-attributes-incremental-direction-1.js @@ -0,0 +1,714 @@ +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'. +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":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"]},{"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": 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" + ] + }, + { + "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": 1630 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,4 +1,9 @@ + error TS2318: Cannot find global type 'ImportAttributes'. +- +-Found 1 error. ++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 + + +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' }; +   ~~~~~~~~~~~~~~~~~~~~~ + + +Found 2 errors in the same file, starting at: producer/index.ts:1 + + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous import-attribute diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,4 +1,9 @@ + error TS2318: Cannot find global type 'ImportAttributes'. +- +-Found 1 error. ++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 + + +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..6a160fdf0072c --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-0.js @@ -0,0 +1,376 @@ +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:: 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":1,"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": 1, + "moduleResolution": 100, + "outDir": "./", + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1253 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..907d51e4f1fdc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/module-top-level-await-incremental-direction-1.js @@ -0,0 +1,406 @@ +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:: 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":99,"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": 99, + "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": 1457 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing module retains the previous top-level-await diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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:: From d12fe8666039a1c30bf9fa48e28be04594f1ab5b Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:04:52 -0700 Subject: [PATCH 12/24] Invalidate semantic diagnostics after module changes --- tools/scripts/tsc/options.ts | 1 + .../execute/tsctests/tscbuild_test.go | 4 +- tsc/internal/tsoptions/options_generated.go | 3 + ...ule-import-attributes-build-direction-0.js | 159 +++++++++++++---- ...ule-import-attributes-build-direction-1.js | 152 +++++++++++------ ...odule-top-level-await-build-direction-0.js | 143 +++++----------- ...odule-top-level-await-build-direction-1.js | 131 +------------- ...port-attributes-incremental-direction-0.js | 160 ++++++++++++++---- ...port-attributes-incremental-direction-1.js | 153 +++++++++++------ ...top-level-await-incremental-direction-0.js | 138 +++++---------- ...top-level-await-incremental-direction-1.js | 124 +------------- 11 files changed, 549 insertions(+), 619 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 9edc677c51a22..2cf7614bb12bf 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -590,6 +590,7 @@ export const options: OptionsModel = { declaration: { group: "optionsForCompiler", shortName: "m", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, showInSimplifiedHelpView: true, diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 90817015920ea..f2648a8932fa0 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1292,8 +1292,7 @@ func TestBuildModuleOptionDiagnostics(t *testing.T) { 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"}, - expectedDiff: "Changing module retains the previous top-level-await diagnostics.", + files: FileMap{"index.ts": "export const result = await 1;\n"}, }, { option: "module", name: "module import attributes", values: [2]any{"esnext", "commonjs"}, @@ -1302,7 +1301,6 @@ func TestBuildModuleOptionDiagnostics(t *testing.T) { "index.ts": "import value from './data.json' with { type: 'json' };\nexport { value };\n", "data.json": `{"value":1}`, }, - expectedDiff: "Changing module retains the previous import-attribute diagnostics.", }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 3985a8af45fb8..9e03bcfe2fef7 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -431,6 +431,9 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions.JsxImportSource != newOptions.JsxImportSource { return true } + if oldOptions.Module != newOptions.Module { + return true + } if oldOptions.ModuleResolution != newOptions.ModuleResolution { return true } 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 index 8473649f4aaf9..4227e2f2c4c56 100644 --- 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 @@ -318,14 +318,20 @@ Output:: [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 1 error. + +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"]}]]],"latestChangedDtsFile":"./index.d.ts"} +{"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": [ @@ -405,35 +411,29 @@ Found 1 error. "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": 1463 + "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:: -Diff:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,9 +1,4 @@ - 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 -+ -+Found 1 error. - - Edit [2]:: no change tsgo --build producer --verbose @@ -447,31 +447,118 @@ Output:: [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 1 error. +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:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,9 +1,4 @@ - 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 -+ -+Found 1 error. - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force 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 index 0e5f96a92838f..cc9165a7ac232 100644 --- 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 @@ -342,19 +342,15 @@ Output:: [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 +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"]},{"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"} +{"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": [ @@ -434,42 +430,22 @@ Found 2 errors in the same file, starting at: producer/index.ts:1 "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": 1630 + "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:: -Diff:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,4 +1,9 @@ - error TS2318: Cannot find global type 'ImportAttributes'. -- --Found 1 error. -+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 - - Edit [2]:: no change tsgo --build producer --verbose @@ -483,36 +459,106 @@ Output:: [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 +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:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,4 +1,9 @@ - error TS2318: Cannot find global type 'ImportAttributes'. -- --Found 1 error. -+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 - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force 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 index 2883ef1afff4d..a9524612442bb 100644 --- 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 @@ -162,7 +162,7 @@ Edit [1]:: change module without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -171,8 +171,16 @@ Output:: [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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -224,53 +232,56 @@ Output:: "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": 1253 + "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:: -Diff:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -293,76 +304,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index ea718f8d290db..1dfec8ae9746d 100644 --- 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 @@ -197,7 +197,7 @@ Edit [1]:: change module without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -206,16 +206,8 @@ Output:: [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":99,"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"} +{"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", @@ -267,81 +259,30 @@ Found 1 error in producer/index.ts:1 "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": 1457 + "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:: -Diff:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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 +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -355,62 +296,8 @@ Output:: [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] *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 -} +//// [/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:: 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 index 10ef8923177c8..bbebb273996af 100644 --- 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 @@ -300,15 +300,21 @@ 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 1 error. +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"]}]]],"latestChangedDtsFile":"./index.d.ts"} +{"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": [ @@ -388,66 +394,148 @@ Found 1 error. "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": 1463 + "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:: -Diff:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,9 +1,4 @@ - 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 -+ -+Found 1 error. - - 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'. -Found 1 error. +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:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,9 +1,4 @@ - 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 -+ -+Found 1 error. - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force 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 index 0193a1f366807..0161908e2fcac 100644 --- 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 @@ -324,20 +324,16 @@ 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 +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"]},{"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"} +{"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": [ @@ -417,78 +413,129 @@ Found 2 errors in the same file, starting at: producer/index.ts:1 "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": 1630 + "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:: -Diff:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,4 +1,9 @@ - error TS2318: Cannot find global type 'ImportAttributes'. -- --Found 1 error. -+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 - - 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 +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:: Changing module retains the previous import-attribute diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,4 +1,9 @@ - error TS2318: Cannot find global type 'ImportAttributes'. -- --Found 1 error. -+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 - - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force 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 index 6a160fdf0072c..036974ec90e5a 100644 --- 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 @@ -155,11 +155,19 @@ Edit [1]:: change module without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -211,52 +219,50 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1253 + "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:: -Diff:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -278,76 +284,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index 907d51e4f1fdc..5b877e0408bbd 100644 --- 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 @@ -185,19 +185,11 @@ Edit [1]:: change module without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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":99,"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"} +{"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", @@ -249,74 +241,28 @@ Found 1 error in producer/index.ts:1 "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": 1457 + "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:: -Diff:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing module retains the previous top-level-await diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -330,62 +276,8 @@ Output:: [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] *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 -} +//// [/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:: From cc1ecf2336dec74621dd914fd703a2ed2950904d Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:05:26 -0700 Subject: [PATCH 13/24] Test incremental imported-helper diagnostics --- .../execute/tsctests/tscbuild_test.go | 15 + .../importHelpers-build-direction-0.js | 429 ++++++++++++++++ .../importHelpers-build-direction-1.js | 467 ++++++++++++++++++ .../importHelpers-incremental-direction-0.js | 409 +++++++++++++++ .../importHelpers-incremental-direction-1.js | 442 +++++++++++++++++ 5 files changed, 1762 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index f2648a8932fa0..d9b7d2ce5f456 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1305,6 +1305,21 @@ func TestBuildModuleOptionDiagnostics(t *testing.T) { }) } +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", + }, + expectedDiff: "Changing importHelpers retains the previous missing-tslib diagnostics.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..3b64bd05785e8 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js @@ -0,0 +1,429 @@ +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:: 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* +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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1384 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..1959e92ae95d0 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js @@ -0,0 +1,467 @@ +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:: 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 + +//// [/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},"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": false, + "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": 1580 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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/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..29d9a4bd4943f --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js @@ -0,0 +1,409 @@ +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:: 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* +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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1384 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..15099e056f0d5 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js @@ -0,0 +1,442 @@ +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:: 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* +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},"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": false, + "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": 1580 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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:: From aacae87e7c2ab6bc1340965ffcb8b4430923904c Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:09:05 -0700 Subject: [PATCH 14/24] Invalidate semantic diagnostics after imported-helper changes --- tools/scripts/tsc/options.ts | 1 + .../execute/tsctests/tscbuild_test.go | 1 - tsc/internal/tsoptions/options_generated.go | 3 + .../importHelpers-build-direction-0.js | 150 ++++++------------ .../importHelpers-build-direction-1.js | 135 ++-------------- .../importHelpers-incremental-direction-0.js | 145 +++++------------ .../importHelpers-incremental-direction-1.js | 128 +-------------- 7 files changed, 108 insertions(+), 455 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 2cf7614bb12bf..a79e45efaa42d 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -431,6 +431,7 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Emit"), diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index d9b7d2ce5f456..e5c28a15a948d 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1315,7 +1315,6 @@ func TestBuildImportHelpersOptionDiagnostics(t *testing.T) { "index.ts": "export async function result() { return 1; }\n", getTestLibPathFor("es2020"): tscDefaultLibContent + "\ninterface Promise { then(callback: (value: T) => U): Promise; }\n", }, - expectedDiff: "Changing importHelpers retains the previous missing-tslib diagnostics.", }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index 9e03bcfe2fef7..bc5003737240e 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -419,6 +419,9 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions.IsolatedDeclarations != newOptions.IsolatedDeclarations { return true } + if oldOptions.ImportHelpers != newOptions.ImportHelpers { + return true + } if oldOptions.Jsx != newOptions.Jsx { return true } 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 index 3b64bd05785e8..3c7831cd91830 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-0.js @@ -181,7 +181,7 @@ Edit [1]:: change importHelpers without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -190,6 +190,14 @@ Output:: [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() { @@ -197,7 +205,7 @@ export function result() { } //// [/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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -250,53 +258,59 @@ export function result() { "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": 1384 + "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:: -Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -320,80 +334,8 @@ 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] *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 -} +//// [/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:: 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 index 1959e92ae95d0..59f58dcc33ad2 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/importHelpers-build-direction-1.js @@ -211,7 +211,7 @@ Edit [1]:: change importHelpers without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -220,14 +220,6 @@ Output:: [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* var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } @@ -243,7 +235,7 @@ export function result() { } //// [/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},"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"} +{"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", @@ -296,83 +288,29 @@ export function result() { "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": 1580 + "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:: -Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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; } -   ~~~~~~ - +[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' -Found 1 error in producer/index.ts:1 -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -388,63 +326,8 @@ Output:: //// [/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] *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 -} +//// [/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:: 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 index 29d9a4bd4943f..3722088587eee 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-0.js @@ -175,10 +175,18 @@ Edit [1]:: change importHelpers without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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() { @@ -186,7 +194,7 @@ export function result() { } //// [/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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -239,52 +247,53 @@ export function result() { "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": 1384 + "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:: -Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -307,80 +316,8 @@ 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] *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 -} +//// [/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:: 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 index 15099e056f0d5..20fb31e85dd96 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/importHelpers-incremental-direction-1.js @@ -200,18 +200,10 @@ Edit [1]:: change importHelpers without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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* var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } @@ -227,7 +219,7 @@ export function result() { } //// [/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},"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"} +{"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", @@ -280,77 +272,28 @@ export function result() { "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": 1580 + "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:: -Diff:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing importHelpers retains the previous missing-tslib diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -365,63 +308,8 @@ Output:: //// [/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] *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 -} +//// [/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:: From 7468380dd2d2dab3d595b45de8921e4ff87a38c9 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:09:50 -0700 Subject: [PATCH 15/24] Test incremental JSX namespace diagnostics --- .../execute/tsctests/tscbuild_test.go | 17 + .../reactNamespace-build-direction-0.js | 459 ++++++++++++++++ .../reactNamespace-build-direction-1.js | 517 ++++++++++++++++++ .../reactNamespace-incremental-direction-0.js | 438 +++++++++++++++ .../reactNamespace-incremental-direction-1.js | 491 +++++++++++++++++ 5 files changed, 1922 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index e5c28a15a948d..19297e9b4b1e6 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1319,6 +1319,23 @@ func TestBuildImportHelpersOptionDiagnostics(t *testing.T) { }) } +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 =
;`)}, + expectedDiff: "Changing reactNamespace retains the previous JSX namespace diagnostics.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..dff49c36c95dc --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js @@ -0,0 +1,459 @@ +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:: 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.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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1451 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,13 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,13 +0,0 @@ +-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 +- + +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] *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 [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..168ec4238d311 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js @@ -0,0 +1,517 @@ +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:: 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 + +//// [/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},"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": "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 + }, + "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": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,13 @@ ++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 ++ + +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:: + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,13 @@ ++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 ++ + +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] *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 [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/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..70a219c345f63 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js @@ -0,0 +1,438 @@ +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:: 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.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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1451 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,13 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,13 +0,0 @@ +-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 +- + +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] *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 [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..2be107ac06555 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js @@ -0,0 +1,491 @@ +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:: 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* +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},"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": "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 + }, + "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": 2063 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: +(stored at emit) /home/src/workspaces/project/producer/index.tsx + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,13 @@ ++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 ++ + +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:: + + +Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,13 @@ ++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 ++ + +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] *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 [4]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: From 465e38bd96759e3c5bec2685eef12d7d144e0b79 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:14:45 -0700 Subject: [PATCH 16/24] Invalidate semantic diagnostics after JSX namespace changes --- tools/scripts/tsc/options.ts | 1 + .../execute/tsctests/tscbuild_test.go | 1 - tsc/internal/tsoptions/options_generated.go | 3 + .../reactNamespace-build-direction-0.js | 191 ++++++------------ .../reactNamespace-build-direction-1.js | 166 +-------------- .../reactNamespace-incremental-direction-0.js | 186 ++++++----------- .../reactNamespace-incremental-direction-1.js | 159 +-------------- 7 files changed, 148 insertions(+), 559 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index a79e45efaa42d..179b77b5716db 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -1011,6 +1011,7 @@ export const options: OptionsModel = { type: "string", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Language and Environment"), diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 19297e9b4b1e6..9cf11d98145a8 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1331,7 +1331,6 @@ func TestBuildReactNamespaceOptionDiagnostics(t *testing.T) { namespace JSX { interface Element {} interface IntrinsicElements { div: {} } } } export const result =
;`)}, - expectedDiff: "Changing reactNamespace retains the previous JSX namespace diagnostics.", }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index bc5003737240e..c7852764fb782 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -496,6 +496,9 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, 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 } 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 index dff49c36c95dc..12bd943d347d1 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-0.js @@ -182,7 +182,7 @@ Edit [1]:: change reactNamespace without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -191,11 +191,24 @@ Output:: [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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -249,64 +262,75 @@ export declare const result: any; "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": 1451 + "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 -Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,13 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,13 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -334,91 +358,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index 168ec4238d311..25a9ac0321641 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/reactNamespace-build-direction-1.js @@ -229,7 +229,7 @@ Edit [1]:: change reactNamespace without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -238,19 +238,6 @@ Output:: [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* declare namespace React { function createElement(...args: any[]): any; @@ -266,7 +253,7 @@ 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},"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"} +{"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", @@ -320,109 +307,30 @@ export {}; "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": 2063 + "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 -Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,13 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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 - +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,13 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -437,64 +345,8 @@ Output:: [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] *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 -} +//// [/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:: 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 index 70a219c345f63..b43b431f36d3e 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-0.js @@ -175,15 +175,28 @@ Edit [1]:: change reactNamespace without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -237,63 +250,69 @@ export declare const result: any; "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": 1451 + "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 -Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,13 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,13 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -320,91 +339,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index 2be107ac06555..1461446d8e03b 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/reactNamespace-incremental-direction-1.js @@ -217,23 +217,10 @@ Edit [1]:: change reactNamespace without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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* declare namespace React { function createElement(...args: any[]): any; @@ -249,7 +236,7 @@ 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},"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"} +{"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", @@ -303,103 +290,29 @@ export {}; "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": 2063 + "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 -Diff:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,13 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing reactNamespace retains the previous JSX namespace diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,13 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -413,64 +326,8 @@ Output:: [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] *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 -} +//// [/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:: From 4979beecc5218a5ab3cb8da9a6e2bbebca4a02e0 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:15:33 -0700 Subject: [PATCH 17/24] Test incremental const-enum namespace merge diagnostics --- .../execute/tsctests/tscbuild_test.go | 20 + ...Enums-namespace-merge-build-direction-0.js | 486 ++++++++++++++++ ...Enums-namespace-merge-build-direction-1.js | 521 ++++++++++++++++++ ...Enums-namespace-order-build-direction-0.js | 410 ++++++++++++++ ...Enums-namespace-order-build-direction-1.js | 445 +++++++++++++++ ...namespace-merge-incremental-direction-0.js | 465 ++++++++++++++++ ...namespace-merge-incremental-direction-1.js | 495 +++++++++++++++++ ...namespace-order-incremental-direction-0.js | 388 +++++++++++++ ...namespace-order-incremental-direction-1.js | 418 ++++++++++++++ 9 files changed, 3648 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 9cf11d98145a8..3e447463f726a 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1335,6 +1335,26 @@ func TestBuildReactNamespaceOptionDiagnostics(t *testing.T) { }) } +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"}, + expectedDiff: "Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics.", + }, + { + 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", + }, + expectedDiff: "Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics.", + }, + }) +} + func TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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..d106a29c756c7 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-0.js @@ -0,0 +1,486 @@ +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:: 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,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},"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 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1595 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..0965d875b0f67 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-merge-build-direction-1.js @@ -0,0 +1,521 @@ +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:: 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 + +//// [/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},"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": false, + "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": 1799 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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..6d1707b324326 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-0.js @@ -0,0 +1,410 @@ +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:: 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":"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},"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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1415 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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' + + + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..f24f36bb08463 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/preserveConstEnums-namespace-order-build-direction-1.js @@ -0,0 +1,445 @@ +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:: 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 + +//// [/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},"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": false, + "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": 1613 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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/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..d74f2a26a554d --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-0.js @@ -0,0 +1,465 @@ +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:: 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":true,"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": true, + "rootDir": "..", + "strict": true, + "target": 7 + }, + "latestChangedDtsFile": "./other.d.ts", + "size": 1595 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..d2498289d99ab --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-merge-incremental-direction-1.js @@ -0,0 +1,495 @@ +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:: 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":false,"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": false, + "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": 1799 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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..26e56d8accd53 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-0.js @@ -0,0 +1,388 @@ +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:: 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":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": "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 + }, + "latestChangedDtsFile": "./index.d.ts", + "size": 1415 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -1,8 +0,0 @@ +-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 +- + +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] *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:: +(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..d12d19a3737cb --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/preserveConstEnums-namespace-order-incremental-direction-1.js @@ -0,0 +1,418 @@ +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:: 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":false,"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": false, + "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": 1613 +} + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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:: + + +Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. +--- nonIncremental.output.txt ++++ incremental.output.txt +@@ -0,0 +1,8 @@ ++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 ++ + +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] *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:: +(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:: From 03e9cc0ebbbaf4eecd9d739ff757a13e7b58e23a Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:19:40 -0700 Subject: [PATCH 18/24] Invalidate semantic diagnostics after const-enum preservation changes --- tools/scripts/tsc/options.ts | 1 + .../execute/tsctests/tscbuild_test.go | 4 +- tsc/internal/tsoptions/options_generated.go | 3 + ...Enums-namespace-merge-build-direction-0.js | 166 +++++------------- ...Enums-namespace-merge-build-direction-1.js | 154 ++-------------- ...Enums-namespace-order-build-direction-0.js | 144 +++++---------- ...Enums-namespace-order-build-direction-1.js | 132 +------------- ...namespace-merge-incremental-direction-0.js | 161 ++++------------- ...namespace-merge-incremental-direction-1.js | 147 +--------------- ...namespace-order-incremental-direction-0.js | 139 ++++----------- ...namespace-order-incremental-direction-1.js | 125 +------------ 11 files changed, 205 insertions(+), 971 deletions(-) diff --git a/tools/scripts/tsc/options.ts b/tools/scripts/tsc/options.ts index 179b77b5716db..520e8d8ae6b45 100644 --- a/tools/scripts/tsc/options.ts +++ b/tools/scripts/tsc/options.ts @@ -913,6 +913,7 @@ export const options: OptionsModel = { type: "Tristate", declaration: { group: "optionsForCompiler", + affectsSemanticDiagnostics: true, affectsEmit: true, affectsBuildInfo: true, category: diagnostic("Emit"), diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 3e447463f726a..5701d8b2caa60 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1340,8 +1340,7 @@ func TestBuildPreserveConstEnumsOptionDiagnostics(t *testing.T) { 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"}, - expectedDiff: "Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics.", + 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}, @@ -1350,7 +1349,6 @@ func TestBuildPreserveConstEnumsOptionDiagnostics(t *testing.T) { "index.ts": "namespace Value { export const enum Field { One } }\n", "other.ts": "class Value {}\n", }, - expectedDiff: "Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics.", }, }) } diff --git a/tsc/internal/tsoptions/options_generated.go b/tsc/internal/tsoptions/options_generated.go index c7852764fb782..a05310e2a2c3f 100644 --- a/tsc/internal/tsoptions/options_generated.go +++ b/tsc/internal/tsoptions/options_generated.go @@ -487,6 +487,9 @@ func CompilerOptionsAffectSemanticDiagnostics(oldOptions *core.CompilerOptions, if oldOptions.GetPathsBasePath("") != newOptions.GetPathsBasePath("") { return true } + if oldOptions.PreserveConstEnums != newOptions.PreserveConstEnums { + return true + } if oldOptions.ResolvePackageJsonExports != newOptions.ResolvePackageJsonExports { return true } 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 index d106a29c756c7..1545c1c210109 100644 --- 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 @@ -203,7 +203,7 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -212,8 +212,16 @@ Output:: [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},"latestChangedDtsFile":"./other.d.ts"} +{"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", @@ -287,53 +295,57 @@ Output:: "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": 1595 + "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:: -Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -357,98 +369,8 @@ 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] *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 -} +//// [/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:: 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 index 0965d875b0f67..5aeee40534e3a 100644 --- 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 @@ -238,7 +238,7 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -247,16 +247,8 @@ Output:: [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":false,"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"} +{"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", @@ -330,80 +322,30 @@ Found 1 error in producer/index.ts:1 "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": 1799 + "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:: -Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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 - +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ Edit [3]:: force rebuild with the same compiler options @@ -419,84 +361,8 @@ Output:: //// [/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] *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 -} +//// [/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:: 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 index 6d1707b324326..aa0e919001c60 100644 --- 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 @@ -172,7 +172,7 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -181,8 +181,16 @@ Output:: [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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -235,53 +243,56 @@ Output:: "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": 1415 + "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:: -Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: Success +ExitStatus:: DiagnosticsPresent_OutputsGenerated 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' +[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:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- Edit [3]:: force rebuild with the same compiler options @@ -304,77 +315,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index f24f36bb08463..f2c6dd009bf68 100644 --- 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 @@ -207,7 +207,7 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success Output:: [HH:MM:SS AM] Projects in this build: * producer/tsconfig.json @@ -216,16 +216,8 @@ Output:: [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":false,"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"} +{"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", @@ -278,81 +270,30 @@ Found 1 error in producer/index.ts:1 "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": 1613 + "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:: -Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --build producer --verbose -ExitStatus:: DiagnosticsPresent_OutputsGenerated +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'... - -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 +[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' -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: -Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -366,63 +307,8 @@ Output:: [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] *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 -} +//// [/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:: 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 index d74f2a26a554d..188cef5a8a9c5 100644 --- 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 @@ -197,11 +197,19 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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},"latestChangedDtsFile":"./other.d.ts"} +{"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", @@ -275,52 +283,51 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1595 + "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:: -Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -343,98 +350,8 @@ 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] *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 -} +//// [/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:: 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 index d2498289d99ab..4fb9adef81f3e 100644 --- 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 @@ -227,19 +227,11 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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":false,"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"} +{"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", @@ -313,74 +305,29 @@ Found 1 error in producer/index.ts:1 "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": 1799 + "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:: -Diff:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing preserveConstEnums retains the previous cross-file namespace/class merge diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -395,84 +342,8 @@ Output:: //// [/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] *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 -} +//// [/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:: 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 index 26e56d8accd53..b92a2e8620af6 100644 --- 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 @@ -165,11 +165,19 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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},"latestChangedDtsFile":"./index.d.ts"} +{"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", @@ -222,52 +230,50 @@ TSFILE: /home/src/workspaces/project/producer/dist/tsconfig.tsbuildinfo "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": 1415 + "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:: -Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: Success +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:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -1,8 +0,0 @@ --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 -- - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -289,77 +295,8 @@ Output:: 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] *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 -} +//// [/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:: 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 index d12d19a3737cb..5e95b360200c6 100644 --- 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 @@ -195,19 +195,11 @@ Edit [1]:: change preserveConstEnums without changing source files } tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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":false,"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"} +{"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", @@ -260,74 +252,28 @@ Found 1 error in producer/index.ts:1 "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": 1613 + "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:: -Diff:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [2]:: no change tsgo --project producer --listEmittedFiles -ExitStatus:: DiagnosticsPresent_OutputsGenerated +ExitStatus:: Success 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:: Changing preserveConstEnums retains the previous namespace/class declaration-order diagnostics. ---- nonIncremental.output.txt -+++ incremental.output.txt -@@ -0,0 +1,8 @@ -+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 -+ - Edit [3]:: force rebuild with the same compiler options tsgo --build producer --verbose --force @@ -341,63 +287,8 @@ Output:: [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] *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 -} +//// [/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:: From aafa83a23429581c31aea89f2996390e9f41d7e5 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:20:32 -0700 Subject: [PATCH 19/24] Test incremental declarations after library reordering --- .../execute/tsctests/tscbuild_test.go | 27 ++ .../bundled-lib-order-build-direction-0.js | 253 +++++++++++++ .../bundled-lib-order-build-direction-1.js | 253 +++++++++++++ .../lib-build-direction-0.js | 358 ++++++++++++++++++ .../lib-build-direction-1.js | 358 ++++++++++++++++++ ...ndled-lib-order-incremental-direction-0.js | 232 ++++++++++++ ...ndled-lib-order-incremental-direction-1.js | 232 ++++++++++++ .../lib-incremental-direction-0.js | 337 +++++++++++++++++ .../lib-incremental-direction-1.js | 337 +++++++++++++++++ 9 files changed, 2387 insertions(+) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/bundled-lib-order-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/bundled-lib-order-incremental-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 5701d8b2caa60..4f97b2c7f64dc 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1353,6 +1353,33 @@ func TestBuildPreserveConstEnumsOptionDiagnostics(t *testing.T) { }) } +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", + }, + expectedDiff: "Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale.", + }, + { + 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 TestBuildEmitOptionChanges(t *testing.T) { t.Parallel() testCompilerOptionChanges(t, []compilerOptionChangeTest{ 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/lib-build-direction-0.js b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js new file mode 100644 index 0000000000000..2fbbadf4d51f1 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js @@ -0,0 +1,358 @@ +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'... + +[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:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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' + + + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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:: +(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..ad69f51dac0a9 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js @@ -0,0 +1,358 @@ +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'... + +[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:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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' + + + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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:: +(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/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/lib-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js new file mode 100644 index 0000000000000..789c9fa4f21f4 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js @@ -0,0 +1,337 @@ +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "first"; ++export declare const result: "second"; + + +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] *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:: +(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..1f3d366b7dec6 --- /dev/null +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js @@ -0,0 +1,337 @@ +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:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +Edit [2]:: no change + +tsgo --project producer --listEmittedFiles +ExitStatus:: Success +Output:: + +producer/tsconfig.json:: +SemanticDiagnostics:: +Signatures:: + + +Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. +--- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts ++++ incremental /home/src/workspaces/project/producer/dist/index.d.ts +@@ -1,1 +1,1 @@ +-export declare const result: "second"; ++export declare const result: "first"; + + +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] *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:: +(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:: From 558287bb59841a6bbcd7f2d4d69ad3072d330965 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:23:15 -0700 Subject: [PATCH 20/24] Invalidate incremental state after global file reordering Replacement libraries can change overload order without changing their contents or membership. Reuse the existing build-info file ordering to invalidate stale state without persisting a duplicate library list. --- .../incremental/buildinfotosnapshot.go | 1 + .../execute/incremental/programtosnapshot.go | 37 ++++++++ .../incremental/programtosnapshot_test.go | 38 ++++++++ tsc/internal/execute/incremental/snapshot.go | 3 + .../execute/tsctests/tscbuild_test.go | 1 - .../lib-build-direction-0.js | 90 +++++++++---------- .../lib-build-direction-1.js | 90 +++++++++---------- .../lib-incremental-direction-0.js | 85 +++++++++--------- .../lib-incremental-direction-1.js | 85 +++++++++--------- 9 files changed, 239 insertions(+), 191 deletions(-) create mode 100644 tsc/internal/execute/incremental/programtosnapshot_test.go 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/programtosnapshot.go b/tsc/internal/execute/incremental/programtosnapshot.go index b817bc44d5b76..483d00fc83695 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() @@ -179,6 +183,39 @@ func (t *toProgramSnapshot) handleFileDelete() { } } +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) handleGlobalScopeChange() { if t.oldProgram == nil || t.globalFileRemoved { return diff --git a/tsc/internal/execute/incremental/programtosnapshot_test.go b/tsc/internal/execute/incremental/programtosnapshot_test.go new file mode 100644 index 0000000000000..a6644dc7f8b15 --- /dev/null +++ b/tsc/internal/execute/incremental/programtosnapshot_test.go @@ -0,0 +1,38 @@ +package incremental + +import ( + "testing" + + "github.com/microsoft/TypeScript/tsc/internal/tspath" + "gotest.tools/v3/assert" +) + +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/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 4f97b2c7f64dc..1247ccab52eb9 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1367,7 +1367,6 @@ func TestBuildLibOrderOptionChanges(t *testing.T) { "node_modules/@typescript/lib-es2015/package.json": `{"name":"@typescript/lib-es2015"}`, "node_modules/@typescript/lib-es2015/symbol.d.ts": "/// \ndeclare function input(): 'second';\n", }, - expectedDiff: "Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale.", }, { option: "lib", name: "bundled lib order", values: [2]any{[]string{"es5", "es2015.symbol"}, []string{"es2015.symbol", "es5"}}, 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 index 2fbbadf4d51f1..ecf0d8d654838 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-0.js @@ -206,56 +206,6 @@ Output:: [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:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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' - - - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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] *modified* export declare const result: "first"; @@ -336,6 +286,46 @@ export declare const result: "first"; "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 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 index ad69f51dac0a9..0d69f8b6db36c 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/lib-build-direction-1.js @@ -206,56 +206,6 @@ Output:: [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:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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' - - - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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] *modified* export declare const result: "second"; @@ -336,6 +286,46 @@ export declare const result: "second"; "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 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 index 789c9fa4f21f4..ed8ef4dc2b865 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-0.js @@ -192,51 +192,8 @@ Edit [1]:: change lib without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "first"; -+export declare const result: "second"; - - -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'... - +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"; @@ -317,6 +274,44 @@ export declare const result: "first"; "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 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 index 1f3d366b7dec6..4808eee0edb99 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/lib-incremental-direction-1.js @@ -192,51 +192,8 @@ Edit [1]:: change lib without changing source files tsgo --project producer --listEmittedFiles ExitStatus:: Success Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -Edit [2]:: no change - -tsgo --project producer --listEmittedFiles -ExitStatus:: Success -Output:: - -producer/tsconfig.json:: -SemanticDiagnostics:: -Signatures:: - - -Diff:: Reordering lib changes overload selection without changing the file set, leaving the inferred declaration stale. ---- nonIncremental /home/src/workspaces/project/producer/dist/index.d.ts -+++ incremental /home/src/workspaces/project/producer/dist/index.d.ts -@@ -1,1 +1,1 @@ --export declare const result: "second"; -+export declare const result: "first"; - - -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'... - +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"; @@ -317,6 +274,44 @@ export declare const result: "second"; "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 From ffad73e3e6699857608534bcca113081864048f8 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:25:19 -0700 Subject: [PATCH 21/24] Test global-file deletion after a non-global deletion --- .../execute/incremental/programtosnapshot.go | 30 +- .../incremental/programtosnapshot_test.go | 38 ++ .../execute/tsctests/tscbuild_test.go | 15 + .../noLib-build-direction-0.js | 376 ++++++++++++++++++ .../noLib-build-direction-1.js | 357 +++++++++++++++++ .../noLib-incremental-direction-0.js | 350 ++++++++++++++++ .../noLib-incremental-direction-1.js | 336 ++++++++++++++++ 7 files changed, 1488 insertions(+), 14 deletions(-) create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/noLib-build-direction-1.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-0.js create mode 100644 tsc/testdata/baselines/reference/tsc/compilerOptionChanges/noLib-incremental-direction-1.js diff --git a/tsc/internal/execute/incremental/programtosnapshot.go b/tsc/internal/execute/incremental/programtosnapshot.go index 483d00fc83695..6fa5cf9a4937b 100644 --- a/tsc/internal/execute/incremental/programtosnapshot.go +++ b/tsc/internal/execute/incremental/programtosnapshot.go @@ -166,20 +166,7 @@ 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 - } - return true - }) + t.oldProgram.snapshot.fileInfos.Range(t.handleDeletedFile) } } @@ -216,6 +203,21 @@ func globalFileOrderChanged(oldSnapshot *snapshot, newSnapshot *snapshot) bool { 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 + } else { + t.snapshot.buildInfoEmitPending.Store(true) + } + return false + } + return true +} + func (t *toProgramSnapshot) handleGlobalScopeChange() { if t.oldProgram == nil || t.globalFileRemoved { return diff --git a/tsc/internal/execute/incremental/programtosnapshot_test.go b/tsc/internal/execute/incremental/programtosnapshot_test.go index a6644dc7f8b15..ec05d4f5bc7d3 100644 --- a/tsc/internal/execute/incremental/programtosnapshot_test.go +++ b/tsc/internal/execute/incremental/programtosnapshot_test.go @@ -3,10 +3,48 @@ 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) { + 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.Equal(t, to.globalFileRemoved, globalFirst) + assert.Equal(t, current.changedFilesSet.Has(file.PathKey()), globalFirst) + assert.Assert(t, current.buildInfoEmitPending.Load()) + }) + } +} + func TestGlobalFileOrderChanged(t *testing.T) { t.Parallel() for _, test := range []struct { diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index 1247ccab52eb9..bb58bfc6a7951 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1379,6 +1379,21 @@ func TestBuildLibOrderOptionChanges(t *testing.T) { }) } +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{ 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/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:: From 090e94080edc0f3e1d25f4c318f38734c26d0ce2 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:27:47 -0700 Subject: [PATCH 22/24] Continue scanning deletions until a global file is found --- tsc/internal/execute/incremental/programtosnapshot.go | 2 +- tsc/internal/execute/incremental/programtosnapshot_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tsc/internal/execute/incremental/programtosnapshot.go b/tsc/internal/execute/incremental/programtosnapshot.go index 6fa5cf9a4937b..76a29b2d8e39a 100644 --- a/tsc/internal/execute/incremental/programtosnapshot.go +++ b/tsc/internal/execute/incremental/programtosnapshot.go @@ -210,10 +210,10 @@ func (t *toProgramSnapshot) handleDeletedFile(filePath tspath.PathKey, oldInfo * t.snapshot.addFileToChangeSet(file.PathKey()) } t.globalFileRemoved = true + return false } else { t.snapshot.buildInfoEmitPending.Store(true) } - return false } return true } diff --git a/tsc/internal/execute/incremental/programtosnapshot_test.go b/tsc/internal/execute/incremental/programtosnapshot_test.go index ec05d4f5bc7d3..68af859abef4d 100644 --- a/tsc/internal/execute/incremental/programtosnapshot_test.go +++ b/tsc/internal/execute/incremental/programtosnapshot_test.go @@ -38,8 +38,8 @@ func TestGlobalFileDeletionAfterNonGlobalFile(t *testing.T) { break } } - assert.Equal(t, to.globalFileRemoved, globalFirst) - assert.Equal(t, current.changedFilesSet.Has(file.PathKey()), globalFirst) + assert.Assert(t, to.globalFileRemoved) + assert.Assert(t, current.changedFilesSet.Has(file.PathKey())) assert.Assert(t, current.buildInfoEmitPending.Load()) }) } From 10699ae01aa32d0ddf6edd4f6b62912f1f92a223 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:39:32 -0700 Subject: [PATCH 23/24] Run deletion-order regression subtests in parallel --- tsc/internal/execute/incremental/programtosnapshot_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tsc/internal/execute/incremental/programtosnapshot_test.go b/tsc/internal/execute/incremental/programtosnapshot_test.go index 68af859abef4d..12e14cdd8ae25 100644 --- a/tsc/internal/execute/incremental/programtosnapshot_test.go +++ b/tsc/internal/execute/incremental/programtosnapshot_test.go @@ -15,6 +15,7 @@ func TestGlobalFileDeletionAfterNonGlobalFile(t *testing.T) { 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}, } From 4d48fcfc3c0d8f5842889867e7fe9e36b64a914b Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:39:33 -0700 Subject: [PATCH 24/24] Refresh incremental baselines after option invalidation fixes All option-change regressions now match fresh compilation without known-bug allowances. Refresh remaining trace baselines for the new invalidation behavior. --- tsc/internal/execute/tsctests/tscbuild_test.go | 18 ++++++++---------- .../typeRoots-build-direction-0.js | 5 ++++- .../typeRoots-build-direction-1.js | 5 ++++- .../types-build-direction-0.js | 5 ++++- .../types-build-direction-1.js | 5 ++++- ...en-file-belongs-to-multiple-sub-projects.js | 8 ++++++-- .../sample/when-module-option-changes.js | 4 ++++ .../sample/when-target-option-changes.js | 14 +++++++++++--- .../typeRoots-incremental-direction-0.js | 5 ++++- .../typeRoots-incremental-direction-1.js | 5 ++++- .../types-incremental-direction-0.js | 5 ++++- .../types-incremental-direction-1.js | 5 ++++- .../tsc/composite/converting-to-modules.js | 2 ++ 13 files changed, 63 insertions(+), 23 deletions(-) diff --git a/tsc/internal/execute/tsctests/tscbuild_test.go b/tsc/internal/execute/tsctests/tscbuild_test.go index bb58bfc6a7951..5ffed8518f1e8 100644 --- a/tsc/internal/execute/tsctests/tscbuild_test.go +++ b/tsc/internal/execute/tsctests/tscbuild_test.go @@ -1063,13 +1063,12 @@ func TestBuildExactOptionalPropertyTypes(t *testing.T) { } type compilerOptionChangeTest struct { - option string - name string - values [2]any - options map[string]any - files FileMap - roots []string - expectedDiff string + option string + name string + values [2]any + options map[string]any + files FileMap + roots []string } func TestBuildOptionChangeShapeSignature(t *testing.T) { @@ -1174,13 +1173,12 @@ func testCompilerOptionChanges(t *testing.T, tests []compilerOptionChangeTest) { edits: []*tscEdit{ noChange, { - caption: "change " + test.option + " without changing source files", - expectedDiff: test.expectedDiff, + caption: "change " + test.option + " without changing source files", edit: func(sys *TestSys) { sys.writeFileNoError(configPath, config(test.values[1-direction])) }, }, - {caption: noChange.caption, expectedDiff: test.expectedDiff}, + noChange, { caption: "force rebuild with the same compiler options", commandLineArgs: []string{"--build", "producer", "--verbose", "--force"}, 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 index 454448cca93e7..2ad4e589165f2 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-0.js @@ -326,7 +326,10 @@ SemanticDiagnostics:: *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 +(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 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 index bf40154383082..a222e28c0cd23 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/typeRoots-build-direction-1.js @@ -326,7 +326,10 @@ SemanticDiagnostics:: *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 +(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 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 index 72168a7f27bc1..4febac96f3cf7 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-0.js @@ -326,7 +326,10 @@ SemanticDiagnostics:: *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 +(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 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 index 95a9809e44e96..6ae22ba02fa06 100644 --- a/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js +++ b/tsc/testdata/baselines/reference/tsbuild/compilerOptionChanges/types-build-direction-1.js @@ -326,7 +326,10 @@ SemanticDiagnostics:: *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 +(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 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 2f2516cfd4eac..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":{"customConditions":["react-native"],"composite":true,"emitDeclarationOnly":true,"declaration":true,"module":99,"moduleResolution":100,"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", @@ -216,6 +216,10 @@ export declare const platform: "native"; "declaration": true, "module": 99, "moduleResolution": 100, + "moduleSuffixes": [ + ".native", + "" + ], "outDir": "./", "strict": true }, @@ -225,7 +229,7 @@ export declare const platform: "native"; ] }, "latestChangedDtsFile": "./src/util.d.ts", - "size": 1825 + "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,"moduleResolution":100,"outDir":"./","strict":true},"referencedMap":[[3,1],[5,2]],"latestChangedDtsFile":"./index.d.ts","resolvedRoot":[[2,6],[3,7],[4,8]]} 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/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js index 20d602a7f40ec..59ec1dddc5a65 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-0.js @@ -314,7 +314,10 @@ SemanticDiagnostics:: *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 +(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 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 index f92bf9c27e112..596ec07f03720 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/typeRoots-incremental-direction-1.js @@ -314,7 +314,10 @@ SemanticDiagnostics:: *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 +(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 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 index acd1203be90ce..b873eedc1106b 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-0.js @@ -314,7 +314,10 @@ SemanticDiagnostics:: *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 +(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 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 index 679f53518a417..15b366ba6fc62 100644 --- a/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js +++ b/tsc/testdata/baselines/reference/tsc/compilerOptionChanges/types-incremental-direction-1.js @@ -314,7 +314,10 @@ SemanticDiagnostics:: *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 +(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 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::