Skip to content

Commit 4383f1a

Browse files
committed
Refactoring
1 parent d387050 commit 4383f1a

File tree

5 files changed

+28
-45
lines changed

5 files changed

+28
-45
lines changed

src/compiler/commandLineParser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ namespace ts {
408408
description: Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon
409409
},
410410
{
411-
name: "disableSizeLimit",
411+
name: "disableProjectSizeLimit",
412412
type: "boolean"
413413
},
414414
{

src/compiler/diagnosticMessages.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2984,9 +2984,5 @@
29842984
"Unknown typing option '{0}'.": {
29852985
"category": "Error",
29862986
"code": 17010
2987-
},
2988-
"Too many JavaScript files in the project. Consider specifying the 'exclude' setting in project configuration to limit included source folders. The likely folder to exclude is '{0}'. To disable the project size limit, set the 'disableSizeLimit' compiler option to 'true'.": {
2989-
"category": "Error",
2990-
"code": 17012
29912987
}
29922988
}

src/compiler/program.ts

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ namespace ts {
77
/* @internal */ export let emitTime = 0;
88
/* @internal */ export let ioReadTime = 0;
99
/* @internal */ export let ioWriteTime = 0;
10-
/* @internal */ export const maxProgramSizeForNonTsFiles = 20 * 1024 * 1024;
11-
12-
/** The version of the TypeScript compiler release */
1310

1411
const emptyArray: any[] = [];
1512

@@ -19,6 +16,7 @@ namespace ts {
1916
"node_modules/@types/",
2017
];
2118

19+
/** The version of the TypeScript compiler release */
2220
export const version = "1.9.0";
2321

2422
export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string {
@@ -1059,8 +1057,6 @@ namespace ts {
10591057
let diagnosticsProducingTypeChecker: TypeChecker;
10601058
let noDiagnosticsTypeChecker: TypeChecker;
10611059
let classifiableNames: Map<string>;
1062-
let programSizeLimitExceeded = false;
1063-
let programSizeForNonTsFiles = 0;
10641060

10651061
let resolvedTypeReferenceDirectives: Map<ResolvedTypeReferenceDirective> = {};
10661062
let fileProcessingDiagnostics = createDiagnosticCollection();
@@ -1166,11 +1162,6 @@ namespace ts {
11661162

11671163
return program;
11681164

1169-
function exceedProgramSizeLimit() {
1170-
return !options.disableSizeLimit && programSizeLimitExceeded;
1171-
}
1172-
1173-
11741165
function getCommonSourceDirectory() {
11751166
if (typeof commonSourceDirectory === "undefined") {
11761167
if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) {
@@ -1219,7 +1210,6 @@ namespace ts {
12191210
(oldOptions.noLib !== options.noLib) ||
12201211
(oldOptions.jsx !== options.jsx) ||
12211212
(oldOptions.allowJs !== options.allowJs) ||
1222-
(oldOptions.disableSizeLimit !== options.disableSizeLimit) ||
12231213
(oldOptions.rootDir !== options.rootDir) ||
12241214
(oldOptions.typesSearchPaths !== options.typesSearchPaths) ||
12251215
(oldOptions.configFilePath !== options.configFilePath) ||
@@ -1838,7 +1828,7 @@ namespace ts {
18381828
}
18391829
}
18401830

1841-
if (diagnostic && !exceedProgramSizeLimit()) {
1831+
if (diagnostic) {
18421832
if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) {
18431833
fileProcessingDiagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, diagnostic, ...diagnosticArgument));
18441834
}
@@ -1871,11 +1861,6 @@ namespace ts {
18711861
return file;
18721862
}
18731863

1874-
const isNonTsFile = !hasTypeScriptFileExtension(fileName);
1875-
if (isNonTsFile && exceedProgramSizeLimit()) {
1876-
return undefined;
1877-
}
1878-
18791864
// We haven't looked for this file, do so now and cache result
18801865
const file = host.getSourceFile(fileName, options.target, hostErrorMessage => {
18811866
if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) {
@@ -1887,25 +1872,6 @@ namespace ts {
18871872
}
18881873
});
18891874

1890-
if (!options.disableSizeLimit && file && file.text && !hasTypeScriptFileExtension(file.fileName)) {
1891-
programSizeForNonTsFiles += file.text.length;
1892-
if (programSizeForNonTsFiles > maxProgramSizeForNonTsFiles) {
1893-
// If the program size limit was reached when processing a file, this file is
1894-
// likely in the problematic folder than contains too many files.
1895-
// Normally the folder is one level down from the commonSourceDirectory, for example,
1896-
// if the commonSourceDirectory is "/src/", and the last processed path was "/src/node_modules/a/b.js",
1897-
// we should show in the error message "/src/node_modules/".
1898-
const commonSourceDirectory = getCommonSourceDirectory();
1899-
let rootLevelDirectory = path.substring(0, Math.max(commonSourceDirectory.length, path.indexOf(directorySeparator, commonSourceDirectory.length)));
1900-
if (rootLevelDirectory[rootLevelDirectory.length - 1] !== directorySeparator) {
1901-
rootLevelDirectory += directorySeparator;
1902-
}
1903-
programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Too_many_JavaScript_files_in_the_project_Consider_specifying_the_exclude_setting_in_project_configuration_to_limit_included_source_folders_The_likely_folder_to_exclude_is_0_To_disable_the_project_size_limit_set_the_disableSizeLimit_compiler_option_to_true, rootLevelDirectory));
1904-
programSizeLimitExceeded = true;
1905-
return undefined;
1906-
}
1907-
}
1908-
19091875
filesByName.set(path, file);
19101876
if (file) {
19111877
file.path = path;

src/server/editorServices.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ namespace ts.server {
2727
});
2828
}
2929

30+
export const maxProgramSizeForNonTsFiles = 20 * 1024 * 1024;
31+
3032
export class ScriptInfo {
3133
svc: ScriptVersionCache;
3234
children: ScriptInfo[] = []; // files referenced by this file
@@ -384,7 +386,7 @@ namespace ts.server {
384386
constructor(
385387
public projectService: ProjectService,
386388
public projectOptions?: ProjectOptions,
387-
public languageServiceDiabled?: boolean) {
389+
public languageServiceDiabled = false) {
388390
if (projectOptions && projectOptions.files) {
389391
// If files are listed explicitly, allow all extensions
390392
projectOptions.compilerOptions.allowNonTsExtensions = true;
@@ -430,7 +432,16 @@ namespace ts.server {
430432

431433
getFileNames() {
432434
if (this.languageServiceDiabled) {
433-
return this.projectOptions ? this.projectOptions.files : undefined;
435+
if (!this.projectOptions) {
436+
return undefined;
437+
}
438+
439+
const fileNames: string[] = [];
440+
if (this.projectOptions && this.projectOptions.compilerOptions) {
441+
fileNames.push(getDefaultLibFilePath(this.projectOptions.compilerOptions));
442+
}
443+
ts.addRange(fileNames, this.projectOptions.files);
444+
return fileNames;
434445
}
435446

436447
const sourceFiles = this.program.getSourceFiles();
@@ -1340,6 +1351,10 @@ namespace ts.server {
13401351

13411352
private exceedTotalNonTsFileSizeLimit(fileNames: string[]) {
13421353
let totalNonTsFileSize = 0;
1354+
if (!this.host.getFileSize) {
1355+
return false;
1356+
}
1357+
13431358
for (const fileName of fileNames) {
13441359
if (hasTypeScriptFileExtension(fileName)) {
13451360
continue;
@@ -1409,14 +1424,17 @@ namespace ts.server {
14091424
return errors;
14101425
}
14111426
else {
1412-
if (this.exceedTotalNonTsFileSizeLimit(projectOptions.files)) {
1427+
if (this.exceedTotalNonTsFileSizeLimit(projectOptions.files) && projectOptions.compilerOptions && !projectOptions.compilerOptions.disableSizeLimit) {
14131428
project.setProjectOptions(projectOptions);
14141429
if (project.languageServiceDiabled) {
14151430
return;
14161431
}
14171432

14181433
project.disableLanguageService();
1419-
project.directoryWatcher.close();
1434+
if (project.directoryWatcher) {
1435+
project.directoryWatcher.close();
1436+
project.directoryWatcher = undefined;
1437+
}
14201438
return;
14211439
}
14221440

src/server/protocol.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ declare namespace ts.server.protocol {
123123
* The list of normalized file name in the project, including 'lib.d.ts'
124124
*/
125125
fileNames?: string[];
126+
/**
127+
* Indicates if the project has a active language service instance
128+
*/
126129
languageServiceDisabled?: boolean;
127130
}
128131

0 commit comments

Comments
 (0)