Skip to content

Commit e242709

Browse files
committed
fix(typescript): avoid crash when converting relatedInformation from overly large files
1 parent 48e49ea commit e242709

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

packages/typescript/lib/quickstart/createAsyncLanguageServicePlugin.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,20 @@ export function createAsyncLanguageServicePlugin(
8282
],
8383
new FileMap(ts.sys.useCaseSensitiveFileNames),
8484
fileName => {
85-
let snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
86-
if (!snapshot) {
87-
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
88-
info.project.getScriptVersion(fileName);
89-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
90-
}
91-
if (snapshot) {
92-
language.scripts.set(fileName, snapshot);
93-
}
94-
else {
95-
language.scripts.delete(fileName);
96-
}
85+
try { // getSnapshot could be crashed if the file is too large
86+
let snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
87+
if (!snapshot) {
88+
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
89+
info.project.getScriptVersion(fileName);
90+
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
91+
}
92+
if (snapshot) {
93+
language.scripts.set(fileName, snapshot);
94+
}
95+
else {
96+
language.scripts.delete(fileName);
97+
}
98+
} catch { }
9799
}
98100
);
99101

packages/typescript/lib/quickstart/createLanguageServicePlugin.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,20 @@ export function createLanguageServicePlugin(
4141
],
4242
new FileMap(ts.sys.useCaseSensitiveFileNames),
4343
fileName => {
44-
let snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
45-
if (!snapshot) {
46-
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
47-
info.project.getScriptVersion(fileName);
48-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
49-
}
50-
if (snapshot) {
51-
language.scripts.set(fileName, snapshot);
52-
}
53-
else {
54-
language.scripts.delete(fileName);
55-
}
44+
try { // getSnapshot could be crashed if the file is too large
45+
let snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
46+
if (!snapshot) {
47+
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
48+
info.project.getScriptVersion(fileName);
49+
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
50+
}
51+
if (snapshot) {
52+
language.scripts.set(fileName, snapshot);
53+
}
54+
else {
55+
language.scripts.delete(fileName);
56+
}
57+
} catch { }
5658
}
5759
);
5860

0 commit comments

Comments
 (0)