mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-05 08:11:30 -06:00
Always generate configFileDiag if file is going to be added to configured project (#37443)
Fixes #30623
This commit is contained in:
parent
0aa2e2783c
commit
2df421b067
@ -3017,6 +3017,13 @@ namespace ts.server {
|
||||
// At this point if file is part of any any configured or external project, then it would be present in the containing projects
|
||||
// So if it still doesnt have any containing projects, it needs to be part of inferred project
|
||||
if (info.isOrphan()) {
|
||||
// Even though this info did not belong to any of the configured projects, send the config file diag
|
||||
if (isArray(retainProjects)) {
|
||||
retainProjects.forEach(project => this.sendConfigFileDiagEvent(project, info.fileName));
|
||||
}
|
||||
else if (retainProjects) {
|
||||
this.sendConfigFileDiagEvent(retainProjects, info.fileName);
|
||||
}
|
||||
Debug.assert(this.openFiles.has(info.path));
|
||||
this.assignOrphanScriptInfoToInferredProject(info, this.openFiles.get(info.path));
|
||||
}
|
||||
|
||||
@ -608,6 +608,10 @@ declare module '@custom/plugin' {
|
||||
path: "/a/b/test.ts",
|
||||
content: "let x = 10"
|
||||
};
|
||||
const file3: File = {
|
||||
path: "/a/b/test2.ts",
|
||||
content: "let xy = 10"
|
||||
};
|
||||
const configFile: File = {
|
||||
path: "/a/b/tsconfig.json",
|
||||
content: `{
|
||||
@ -618,9 +622,20 @@ declare module '@custom/plugin' {
|
||||
"files": ["app.ts"]
|
||||
}`
|
||||
};
|
||||
const serverEventManager = new TestServerEventManager([file, file2, libFile, configFile]);
|
||||
const serverEventManager = new TestServerEventManager([file, file2, file3, libFile, configFile]);
|
||||
openFilesForSession([file2], serverEventManager.session);
|
||||
serverEventManager.checkSingleConfigFileDiagEvent(configFile.path, file2.path, [
|
||||
getUnknownCompilerOptionDiagnostic(configFile, "foo"),
|
||||
getUnknownCompilerOptionDiagnostic(configFile, "allowJS", "allowJs")
|
||||
]);
|
||||
openFilesForSession([file], serverEventManager.session);
|
||||
// We generate only if project is created when opening file from the project
|
||||
serverEventManager.hasZeroEvent("configFileDiag");
|
||||
openFilesForSession([file3], serverEventManager.session);
|
||||
serverEventManager.checkSingleConfigFileDiagEvent(configFile.path, file3.path, [
|
||||
getUnknownCompilerOptionDiagnostic(configFile, "foo"),
|
||||
getUnknownCompilerOptionDiagnostic(configFile, "allowJS", "allowJs")
|
||||
]);
|
||||
});
|
||||
|
||||
it("are not generated when the config file has errors but suppressDiagnosticEvents is true", () => {
|
||||
@ -651,6 +666,10 @@ declare module '@custom/plugin' {
|
||||
path: "/a/b/test.ts",
|
||||
content: "let x = 10"
|
||||
};
|
||||
const file3: File = {
|
||||
path: "/a/b/test2.ts",
|
||||
content: "let xy = 10"
|
||||
};
|
||||
const configFile: File = {
|
||||
path: "/a/b/tsconfig.json",
|
||||
content: `{
|
||||
@ -658,9 +677,14 @@ declare module '@custom/plugin' {
|
||||
}`
|
||||
};
|
||||
|
||||
const serverEventManager = new TestServerEventManager([file, file2, libFile, configFile]);
|
||||
const serverEventManager = new TestServerEventManager([file, file2, file3, libFile, configFile]);
|
||||
openFilesForSession([file2], serverEventManager.session);
|
||||
serverEventManager.checkSingleConfigFileDiagEvent(configFile.path, file2.path, emptyArray);
|
||||
openFilesForSession([file], serverEventManager.session);
|
||||
// We generate only if project is created when opening file from the project
|
||||
serverEventManager.hasZeroEvent("configFileDiag");
|
||||
openFilesForSession([file3], serverEventManager.session);
|
||||
serverEventManager.checkSingleConfigFileDiagEvent(configFile.path, file3.path, emptyArray);
|
||||
});
|
||||
|
||||
it("contains the project reference errors", () => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user