Renaming a file results in mis-identifying the right sconfig file
Extension Version
0.20251119.1
VS Code Version
1.106.0
Operating system Version
Windows 11
Steps to reproduce
I have a folder with a tsconfig file in it /src/path/integration/tsconfig.json this just extends /src/path/tsconfig.cypress.json....
{
// VSCode doesn't support multiple config files at the same level so we need a file
// like this in every integration folder https://github.com/microsoft/vscode/issues/12463
"extends": "../../../tsconfig.cypress.json"
}
the tsconfig.cypress.json looks like this:
"extends": "../../tools/ts-configs/tsconfig.cypress.json",
"compilerOptions": {},
"include": [
"./**/integration/**/*",
"../../cypress/support/global.d.ts",
"../../cypress/support/shared.d.ts",
"../../node_modules/cypress/types/"
],
"exclude": ["./**/*.play.ts", "./**/*.play.extended.ts"]
- I open /src/path/integration/file.spec.ts
- I rename in vscode it to /src/path/integration/file2.spec.ts
Issue
lots of errors appear. These errors happen when the file is using the tsconfig from the base folder, instead of the tsconfig file in the folder of the renamed file (the extra include in the tsconfig provides globals used in the file).
When I close the file and re-open it, I thought it fixed it but I just retsted and the errors persisted, Restarting tsgo extension definitely does . Will add logs separately
The relevant log appears to be this:
======== Cache Statistics ========
[11:07:07.672] Open file count: 5
[11:07:07.672] Cached disk files: 5984
[11:07:07.672] Project count: 3
[11:07:07.672] Config count: 9
[11:07:07.672] Parse cache size: 50442
[11:07:07.672] Program count: 3
[11:07:07.672] Extended config cache size: 4
[11:07:07.674] Updated watches in 1.9993ms
[11:07:21.873] Scheduling new diagnostics refresh...
[11:07:21.873] Canceled scheduled diagnostics refresh
======== Cloning snapshot 56 ========
[11:07:07.661] Reason: DidOpenFile - file:///c%3A/Projects/x/src/frontend/modules/y/integration/y2.spec.ts
[11:07:07.661] DidChangeFiles
[11:07:07.661] Checking for changes affecting config files
[11:07:07.661] Summarizing file changes
[11:07:07.661] Checking if any changed files are config files
[11:07:07.661] computeConfigFileName:: File: c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts:: Result: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json
[11:07:07.661] Searching for default configured project for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts
[11:07:07.661] Acquiring config for open file
[11:07:07.661] Creating ConfiguredProject: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json, currentDirectory: c:/Projects/x/src/frontend/modules/y/integration
[11:07:07.661] Acquiring config for project
[11:07:07.661] Project does not contain file
[11:07:07.661] computeConfigFileName:: File: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json:: Result: c:/Projects/x/src/frontend/tsconfig.json
[11:07:07.661] Searching ancestor config file at c:/Projects/x/src/frontend/tsconfig.json
[11:07:07.661] Acquiring config for open file
[11:07:07.661] Creating ConfiguredProject: c:/Projects/x/src/frontend/tsconfig.json, currentDirectory: c:/Projects/x/src/frontend
[11:07:07.661] Acquiring config for project
[11:07:07.661] CompilerHost
[11:07:08.660] Program update for c:/Projects/x/src/frontend/tsconfig.json completed in 999.0977ms
[11:07:08.660] Project does not contain file
[11:07:08.660] computeConfigFileName:: File: c:/Projects/x/src/frontend/tsconfig.json:: Result: c:/Projects/x/src/tsconfig.json
[11:07:08.660] Searching ancestor config file at c:/Projects/x/src/tsconfig.json
[11:07:08.660] Acquiring config for open file
[11:07:08.660] Creating ConfiguredProject: c:/Projects/x/src/tsconfig.json, currentDirectory: c:/Projects/x/src
[11:07:08.660] Acquiring config for project
[11:07:08.660] Project does not contain file
[11:07:08.661] computeConfigFileName:: File: c:/Projects/x/src/tsconfig.json:: Result: c:/Projects/x/jsconfig.json
[11:07:08.661] Searching ancestor config file at c:/Projects/x/jsconfig.json
[11:07:08.661] Acquiring config for open file
[11:07:08.661] Creating ConfiguredProject: c:/Projects/x/jsconfig.json, currentDirectory: c:/Projects/x
[11:07:08.661] Acquiring config for project
[11:07:08.661] CompilerHost
[11:07:21.759] Program update for c:/Projects/x/jsconfig.json completed in 13.0980113s
[11:07:21.759] Project does not contain file
[11:07:21.759] computeConfigFileName:: File: c:/Projects/x/jsconfig.json:: Result:
[11:07:21.759] No default configured project found for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts (searched in 14.0976434s)
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] Updating inferred project config with 3 root files
[11:07:21.759] DidRequestFile
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] Acquiring config for project
[11:07:21.759] CompilerHost
[11:07:21.811] Program update for /dev/null/inferred completed in 51.6356ms
[11:07:21.811] Completed file request for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts in 51.6356ms
Particularly something goes wrong here:
[11:07:07.661] Searching for default configured project for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts
[11:07:07.661] Acquiring config for open file
[11:07:07.661] Creating ConfiguredProject: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json, currentDirectory: c:/Projects/x/src/frontend/modules/y/integration
[11:07:07.661] Acquiring config for project
[11:07:07.661] Project does not contain file
c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json definitely does contain y2.spec.ts
This is the same log after restarting tsgo
[11:24:15.080] Reason: DidOpenFile - file:///c%3A/Projects/x/src/frontend/modules/y/integration/y2.spec.ts
[11:24:15.080] DidChangeFiles
[11:24:15.080] Checking for changes affecting config files
[11:24:15.080] Summarizing file changes
[11:24:15.080] Checking if any changed files are config files
[11:24:15.080] computeConfigFileName:: File: c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts:: Result: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json
[11:24:15.080] Searching for default configured project for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts
[11:24:15.080] Acquiring config for open file
[11:24:15.080] Creating ConfiguredProject: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json, currentDirectory: c:/Projects/x/src/frontend/modules/y/integration
[11:24:15.080] Acquiring config for project
[11:24:15.080] CompilerHost
[11:24:15.114] Program update for c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json completed in 33.739ms
[11:24:15.114] Project contains file directly
[11:24:15.114] Found default configured project for c:/Projects/x/src/frontend/modules/y/integration/y2.spec.ts: c:/Projects/x/src/frontend/modules/y/integration/tsconfig.json (in 33.739ms)
[11:24:15.114] Acquiring config for project
[11:24:15.114] Acquiring config for project
[11:24:15.114] DidRequestFile
[11:24:15.114] Acquiring config for project
[11:24:15.137] Removed 27186 cached files in 22.899ms
[11:24:15.143] Finished cloning snapshot 3 into snapshot 4 in 63.0018ms
Still occurring in the latest version. It's quite annoying as nowadays AI makes a lot of changes/refactors, and I end up having to restart the language server multiple times per day (like >10 times everyday).