Fix --strictNullChecks error with getDefaultProjectForFile (#25060)
* Fix --strictNullChecks error with getDefaultProjectForFile * Mark methods internal
This commit is contained in:
parent
42fc8431f7
commit
38a60ac59b
|
@ -693,18 +693,26 @@ namespace ts.server {
|
|||
}
|
||||
|
||||
getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean): Project | undefined {
|
||||
let scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
if (ensureProject && (!scriptInfo || scriptInfo.isOrphan())) {
|
||||
this.ensureProjectStructuresUptoDate();
|
||||
scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
if (!scriptInfo) {
|
||||
return Errors.ThrowNoProject();
|
||||
}
|
||||
return scriptInfo.getDefaultProject();
|
||||
}
|
||||
return ensureProject ? this.ensureDefaultProjectForFile(fileName) : this.tryGetDefaultProjectForFile(fileName);
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
tryGetDefaultProjectForFile(fileName: NormalizedPath): Project | undefined {
|
||||
const scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
return scriptInfo && !scriptInfo.isOrphan() ? scriptInfo.getDefaultProject() : undefined;
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
ensureDefaultProjectForFile(fileName: NormalizedPath): Project {
|
||||
return this.tryGetDefaultProjectForFile(fileName) || this.doEnsureDefaultProjectForFile(fileName);
|
||||
}
|
||||
|
||||
private doEnsureDefaultProjectForFile(fileName: NormalizedPath): Project {
|
||||
this.ensureProjectStructuresUptoDate();
|
||||
const scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
|
||||
return scriptInfo ? scriptInfo.getDefaultProject() : Errors.ThrowNoProject();
|
||||
}
|
||||
|
||||
getScriptInfoEnsuringProjectsUptoDate(uncheckedFileName: string) {
|
||||
this.ensureProjectStructuresUptoDate();
|
||||
return this.getScriptInfo(uncheckedFileName);
|
||||
|
|
|
@ -1150,7 +1150,7 @@ namespace ts.server {
|
|||
// Since this is syntactic operation, there should always be project for the file
|
||||
// we wouldnt have to ensure project but rather throw if we dont get project
|
||||
const file = toNormalizedPath(args.file);
|
||||
const project = this.getProject(args.projectFileName) || this.projectService.getDefaultProjectForFile(file, /*ensureProject*/ false);
|
||||
const project = this.getProject(args.projectFileName) || this.projectService.tryGetDefaultProjectForFile(file);
|
||||
if (!project) {
|
||||
return Errors.ThrowNoProject();
|
||||
}
|
||||
|
@ -1162,7 +1162,7 @@ namespace ts.server {
|
|||
|
||||
private getFileAndProjectWorker(uncheckedFileName: string, projectFileName: string | undefined): { file: NormalizedPath, project: Project } {
|
||||
const file = toNormalizedPath(uncheckedFileName);
|
||||
const project = this.getProject(projectFileName) || this.projectService.getDefaultProjectForFile(file, /*ensureProject*/ true)!; // TODO: GH#18217
|
||||
const project = this.getProject(projectFileName) || this.projectService.ensureDefaultProjectForFile(file);
|
||||
return { file, project };
|
||||
}
|
||||
|
||||
|
@ -1461,7 +1461,7 @@ namespace ts.server {
|
|||
private createCheckList(fileNames: string[], defaultProject?: Project): PendingErrorCheck[] {
|
||||
return mapDefined<string, PendingErrorCheck>(fileNames, uncheckedFileName => {
|
||||
const fileName = toNormalizedPath(uncheckedFileName);
|
||||
const project = defaultProject || this.projectService.getDefaultProjectForFile(fileName, /*ensureProject*/ false);
|
||||
const project = defaultProject || this.projectService.tryGetDefaultProjectForFile(fileName);
|
||||
return project && { fileName, project };
|
||||
});
|
||||
}
|
||||
|
@ -1859,7 +1859,7 @@ namespace ts.server {
|
|||
const lowPriorityFiles: NormalizedPath[] = [];
|
||||
const veryLowPriorityFiles: NormalizedPath[] = [];
|
||||
const normalizedFileName = toNormalizedPath(fileName);
|
||||
const project = this.projectService.getDefaultProjectForFile(normalizedFileName, /*ensureProject*/ true)!;
|
||||
const project = this.projectService.ensureDefaultProjectForFile(normalizedFileName);
|
||||
for (const fileNameInProject of fileNamesInProject) {
|
||||
if (this.getCanonicalFileName(fileNameInProject) === this.getCanonicalFileName(fileName)) {
|
||||
highPriorityFiles.push(fileNameInProject);
|
||||
|
|
|
@ -3097,7 +3097,7 @@ namespace ts.projectSystem {
|
|||
checkProjectRootFiles(project, [file.path]);
|
||||
checkProjectActualFiles(project, [file.path, libFile.path]);
|
||||
|
||||
assert.strictEqual(projectService.getDefaultProjectForFile(server.toNormalizedPath(file.path), /*ensureProject*/ true), project);
|
||||
assert.strictEqual(projectService.ensureDefaultProjectForFile(server.toNormalizedPath(file.path)), project);
|
||||
const indexOfX = file.content.indexOf("x");
|
||||
assert.deepEqual(project.getLanguageService(/*ensureSynchronized*/ true).getQuickInfoAtPosition(file.path, indexOfX), {
|
||||
kind: ScriptElementKind.variableElement,
|
||||
|
|
|
@ -13828,6 +13828,9 @@ declare namespace ts.server {
|
|||
setCompilerOptionsForInferredProjects(projectCompilerOptions: protocol.ExternalProjectCompilerOptions, projectRootPath?: string): void;
|
||||
findProject(projectName: string): Project | undefined;
|
||||
getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean): Project | undefined;
|
||||
tryGetDefaultProjectForFile(fileName: NormalizedPath): Project | undefined;
|
||||
ensureDefaultProjectForFile(fileName: NormalizedPath): Project;
|
||||
private doEnsureDefaultProjectForFile;
|
||||
getScriptInfoEnsuringProjectsUptoDate(uncheckedFileName: string): ScriptInfo | undefined;
|
||||
private ensureProjectStructuresUptoDate;
|
||||
getFormatCodeOptions(file: NormalizedPath): FormatCodeSettings;
|
||||
|
|
Loading…
Reference in a new issue