Skip to content

Commit 0aa72a7

Browse files
author
Armando Aguirre
committed
Added backward compatibility and PR comments
1 parent cdff95f commit 0aa72a7

4 files changed

Lines changed: 34 additions & 26 deletions

File tree

src/server/editorServices.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,7 +1429,7 @@ namespace ts.server {
14291429
this,
14301430
this.documentRegistry,
14311431
compilerOptions,
1432-
/*exceededFilename*/ this.getFilenameForExceededTotalSizeLimitForNonTsFiles(projectFileName, compilerOptions, files, externalFilePropertyReader),
1432+
/*lastFileExceededProgramSize*/ this.getFilenameForExceededTotalSizeLimitForNonTsFiles(projectFileName, compilerOptions, files, externalFilePropertyReader),
14331433
options.compileOnSave === undefined ? true : options.compileOnSave);
14341434
project.excludedFiles = excludedFiles;
14351435

@@ -1495,14 +1495,14 @@ namespace ts.server {
14951495
const cachedDirectoryStructureHost = createCachedDirectoryStructureHost(this.host, this.host.getCurrentDirectory(), this.host.useCaseSensitiveFileNames);
14961496
const { projectOptions, configFileErrors, configFileSpecs } = this.convertConfigFileContentToProjectOptions(configFileName, cachedDirectoryStructureHost);
14971497
this.logger.info(`Opened configuration file ${configFileName}`);
1498-
const exceededFilename = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(configFileName, projectOptions.compilerOptions, projectOptions.files, fileNamePropertyReader);
1498+
const lastFileExceededProgramSize = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(configFileName, projectOptions.compilerOptions, projectOptions.files, fileNamePropertyReader);
14991499
const project = new ConfiguredProject(
15001500
configFileName,
15011501
this,
15021502
this.documentRegistry,
15031503
projectOptions.configHasFilesProperty,
15041504
projectOptions.compilerOptions,
1505-
exceededFilename,
1505+
lastFileExceededProgramSize,
15061506
projectOptions.compileOnSave === undefined ? false : projectOptions.compileOnSave,
15071507
cachedDirectoryStructureHost);
15081508

@@ -1515,7 +1515,7 @@ namespace ts.server {
15151515
WatchType.ConfigFilePath,
15161516
project
15171517
);
1518-
if (!exceededFilename) {
1518+
if (!lastFileExceededProgramSize) {
15191519
project.watchWildcards(projectOptions.wildcardDirectories);
15201520
}
15211521

@@ -1628,9 +1628,9 @@ namespace ts.server {
16281628
// Update the project
16291629
project.configFileSpecs = configFileSpecs;
16301630
project.setProjectErrors(configFileErrors);
1631-
const exceededFilename = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(project.canonicalConfigFilePath, projectOptions.compilerOptions, projectOptions.files, fileNamePropertyReader);
1632-
if (exceededFilename) {
1633-
project.disableLanguageService(exceededFilename);
1631+
const lastFileExceededProgramSize = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(project.canonicalConfigFilePath, projectOptions.compilerOptions, projectOptions.files, fileNamePropertyReader);
1632+
if (lastFileExceededProgramSize) {
1633+
project.disableLanguageService(lastFileExceededProgramSize);
16341634
project.stopWatchingWildCards();
16351635
}
16361636
else {
@@ -2394,9 +2394,9 @@ namespace ts.server {
23942394
externalProject.excludedFiles = excludedFiles;
23952395
if (!tsConfigFiles) {
23962396
const compilerOptions = convertCompilerOptions(proj.options);
2397-
const exceededFilename = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(proj.projectFileName, compilerOptions, proj.rootFiles, externalFilePropertyReader);
2398-
if (exceededFilename) {
2399-
externalProject.disableLanguageService(exceededFilename);
2397+
const lastFileExceededProgramSize = this.getFilenameForExceededTotalSizeLimitForNonTsFiles(proj.projectFileName, compilerOptions, proj.rootFiles, externalFilePropertyReader);
2398+
if (lastFileExceededProgramSize) {
2399+
externalProject.disableLanguageService(lastFileExceededProgramSize);
24002400
}
24012401
else {
24022402
externalProject.enableLanguageService();

src/server/project.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,13 @@ namespace ts.server {
126126
private cachedUnresolvedImportsPerFile = new UnresolvedImportsMap();
127127
private lastCachedUnresolvedImportsList: SortedReadonlyArray<string>;
128128

129+
/*@internal*/
130+
private lastFileExceededProgramSize: string | undefined;
131+
129132
// wrapper over the real language service that will suppress all semantic operations
130133
protected languageService: LanguageService;
131134

132135
public languageServiceEnabled = true;
133-
public exceededFilename: string | undefined;
134136

135137
readonly trace?: (s: string) => void;
136138
readonly realpath?: (path: string) => string;
@@ -213,7 +215,7 @@ namespace ts.server {
213215
readonly projectService: ProjectService,
214216
private documentRegistry: DocumentRegistry,
215217
hasExplicitListOfFiles: boolean,
216-
exceededFilename: string | undefined,
218+
lastFileExceededProgramSize: string | undefined,
217219
private compilerOptions: CompilerOptions,
218220
public compileOnSaveEnabled: boolean,
219221
directoryStructureHost: DirectoryStructureHost,
@@ -245,8 +247,8 @@ namespace ts.server {
245247
// Use the current directory as resolution root only if the project created using current directory string
246248
this.resolutionCache = createResolutionCache(this, currentDirectory && this.currentDirectory, /*logChangesWhenResolvingModule*/ true);
247249
this.languageService = createLanguageService(this, this.documentRegistry);
248-
if (exceededFilename) {
249-
this.disableLanguageService(exceededFilename);
250+
if (lastFileExceededProgramSize) {
251+
this.disableLanguageService(lastFileExceededProgramSize);
250252
}
251253
this.markAsDirty();
252254
}
@@ -498,16 +500,17 @@ namespace ts.server {
498500
return;
499501
}
500502
this.languageServiceEnabled = true;
503+
this.lastFileExceededProgramSize = undefined;
501504
this.projectService.onUpdateLanguageServiceStateForProject(this, /*languageServiceEnabled*/ true);
502505
}
503506

504-
disableLanguageService(exceededFilename: string) {
507+
disableLanguageService(lastFileExceededProgramSize?: string) {
505508
if (!this.languageServiceEnabled) {
506509
return;
507510
}
508511
this.languageService.cleanupSemanticCache();
509512
this.languageServiceEnabled = false;
510-
this.exceededFilename = exceededFilename;
513+
this.lastFileExceededProgramSize = lastFileExceededProgramSize;
511514
this.builderState = undefined;
512515
this.resolutionCache.closeTypeRootsWatch();
513516
this.projectService.onUpdateLanguageServiceStateForProject(this, /*languageServiceEnabled*/ false);
@@ -1000,7 +1003,8 @@ namespace ts.server {
10001003
version: this.projectStructureVersion,
10011004
isInferred: this.projectKind === ProjectKind.Inferred,
10021005
options: this.getCompilationSettings(),
1003-
exceededFilename: this.exceededFilename
1006+
languageServiceDisabled: !this.languageServiceEnabled,
1007+
lastFileExceededProgramSize: this.lastFileExceededProgramSize
10041008
};
10051009
const updatedFileNames = this.updatedFileNames;
10061010
this.updatedFileNames = undefined;
@@ -1184,7 +1188,7 @@ namespace ts.server {
11841188
projectService,
11851189
documentRegistry,
11861190
/*files*/ undefined,
1187-
/*exceededFileName*/ undefined,
1191+
/*lastFileExceededProgramSize*/ undefined,
11881192
compilerOptions,
11891193
/*compileOnSaveEnabled*/ false,
11901194
projectService.host,
@@ -1263,15 +1267,15 @@ namespace ts.server {
12631267
documentRegistry: DocumentRegistry,
12641268
hasExplicitListOfFiles: boolean,
12651269
compilerOptions: CompilerOptions,
1266-
exceededFilename: string | undefined,
1270+
lastFileExceededProgramSize: string | undefined,
12671271
public compileOnSaveEnabled: boolean,
12681272
cachedDirectoryStructureHost: CachedDirectoryStructureHost) {
12691273
super(configFileName,
12701274
ProjectKind.Configured,
12711275
projectService,
12721276
documentRegistry,
12731277
hasExplicitListOfFiles,
1274-
exceededFilename,
1278+
lastFileExceededProgramSize,
12751279
compilerOptions,
12761280
compileOnSaveEnabled,
12771281
cachedDirectoryStructureHost,
@@ -1458,15 +1462,15 @@ namespace ts.server {
14581462
projectService: ProjectService,
14591463
documentRegistry: DocumentRegistry,
14601464
compilerOptions: CompilerOptions,
1461-
exceededFilename: string | undefined,
1465+
lastFileExceededProgramSize: string | undefined,
14621466
public compileOnSaveEnabled: boolean,
14631467
projectFilePath?: string) {
14641468
super(externalProjectName,
14651469
ProjectKind.External,
14661470
projectService,
14671471
documentRegistry,
14681472
/*hasExplicitListOfFiles*/ true,
1469-
exceededFilename,
1473+
lastFileExceededProgramSize,
14701474
compilerOptions,
14711475
compileOnSaveEnabled,
14721476
projectService.host,

src/server/protocol.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,11 +1104,14 @@ namespace ts.server.protocol {
11041104
* Current set of compiler options for project
11051105
*/
11061106
options: ts.CompilerOptions;
1107-
1107+
/**
1108+
* true if project language service is disabled
1109+
*/
1110+
languageServiceDisabled: boolean;
11081111
/**
11091112
* Filename of the last file analyzed before disabling the language service. undefined, if the language service is enabled.
11101113
*/
1111-
exceededFilename: string | undefined;
1114+
lastFileExceededProgramSize: string | undefined;
11121115
}
11131116

11141117
/**

tests/baselines/reference/api/tsserverlibrary.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7518,7 +7518,7 @@ declare namespace ts.server {
75187518
*/
75197519
emitFile(scriptInfo: ScriptInfo, writeFile: (path: string, data: string, writeByteOrderMark?: boolean) => void): boolean;
75207520
enableLanguageService(): void;
7521-
disableLanguageService(): void;
7521+
disableLanguageService(lastFileExceededProgramSize?: string): void;
75227522
getProjectName(): string;
75237523
abstract getTypeAcquisition(): TypeAcquisition;
75247524
protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition;
@@ -7891,7 +7891,8 @@ declare namespace ts.server {
78917891
private getConfiguredProjectByCanonicalConfigFilePath(canonicalConfigFilePath);
78927892
private findExternalProjectByProjectName(projectFileName);
78937893
private convertConfigFileContentToProjectOptions(configFilename, cachedDirectoryStructureHost);
7894-
private exceededTotalSizeLimitForNonTsFiles<T>(name, options, fileNames, propertyReader);
7894+
/** Get a filename if the language service exceeds the maximum allowed program size; otherwise returns undefined. */
7895+
private getFilenameForExceededTotalSizeLimitForNonTsFiles<T>(name, options, fileNames, propertyReader);
78957896
private createExternalProject(projectFileName, files, options, typeAcquisition, excludedFiles);
78967897
private sendProjectTelemetry(projectKey, project, projectOptions?);
78977898
private addFilesToNonInferredProjectAndUpdateGraph<T>(project, files, propertyReader, typeAcquisition);

0 commit comments

Comments
 (0)