in server/src/session.ts [360:385]
private enableLanguageServiceForProject(project: ts.server.Project): void {
const {projectName} = project;
if (project.isClosed()) {
this.info(`Cannot enable language service for closed project ${projectName}.`);
return;
}
if (!project.languageServiceEnabled) {
project.enableLanguageService();
// When the language service got disabled, the program was discarded via
// languageService.cleanupSemanticCache(). However, the program is not
// recreated when the language service is re-enabled. We manually mark the
// project as dirty to force update the graph.
project.markAsDirty();
}
if (!this.ivy) {
// Immediately enable Legacy / View Engine language service
this.info(`Enabling View Engine language service for ${projectName}.`);
return;
}
this.info(`Enabling Ivy language service for ${projectName}.`);
this.handleCompilerOptionsDiagnostics(project);
// Send diagnostics since we skipped this step when opening the file
// (because language service was disabled while waiting for ngcc).
// First, make sure the Angular project is complete.
this.runGlobalAnalysisForNewlyLoadedProject(project);
}