Skip to content
This repository was archived by the owner on Nov 21, 2025. It is now read-only.

Commit 4d00a86

Browse files
authored
fix: improve error reporting of hover and defintion requests (#56)
1 parent 635072a commit 4d00a86

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

server/src/editorServices.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2033,6 +2033,8 @@ export class CompilerService {
20332033
this.languageService = ts.createLanguageService(this.host, this.documentRegistry);
20342034

20352035
this.ng = this.resolveLanguageServiceModule();
2036+
this.log(`Angular Language Service: ${this.ng.VERSION.full}`);
2037+
this.log(`TypeScript: ${ts.version}`);
20362038
this.ngHost = new this.ng.TypeScriptServiceHost(this.host, this.languageService);
20372039
this.ngService = logServiceTimes(logger, this.ng.createLanguageService(this.ngHost));
20382040
this.ngHost.setSite(this.ngService);

server/src/server.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,16 @@ function ngDefintionToDefintion(definition: ng.Definition): Definition {
165165
}
166166
}
167167

168-
connection.onDefinition((textDocumentPosition: TextDocumentPositionParams): Definition => {
168+
function logErrors<T>(f: () => T): T {
169+
try {
170+
return f();
171+
} catch (e) {
172+
if (e.message && e.stack) connection.console.error(`SERVER ERROR: ${e.message}\n${e.stack}`);
173+
throw e;
174+
}
175+
}
176+
177+
connection.onDefinition((textDocumentPosition: TextDocumentPositionParams): Definition => logErrors(() => {
169178
const {fileName, service, offset, languageId} = documents.getServiceInfo(textDocumentPosition.textDocument,
170179
textDocumentPosition.position)
171180
if (fileName && service && offset != null) {
@@ -174,7 +183,7 @@ connection.onDefinition((textDocumentPosition: TextDocumentPositionParams): Defi
174183
return ngDefintionToDefintion(result);
175184
}
176185
}
177-
});
186+
}));
178187

179188
function ngHoverToHover(hover: ng.Hover, document: TextDocumentIdentifier): Hover {
180189
if (hover) {
@@ -189,7 +198,7 @@ function ngHoverToHover(hover: ng.Hover, document: TextDocumentIdentifier): Hove
189198
}
190199
}
191200

192-
connection.onHover((textDocumentPosition: TextDocumentPositionParams): Hover => {
201+
connection.onHover((textDocumentPosition: TextDocumentPositionParams): Hover => logErrors(() => {
193202
const {fileName, service, offset, languageId} = documents.getServiceInfo(textDocumentPosition.textDocument,
194203
textDocumentPosition.position)
195204
if (fileName && service && offset != null) {
@@ -198,7 +207,7 @@ connection.onHover((textDocumentPosition: TextDocumentPositionParams): Hover =>
198207
return ngHoverToHover(result, textDocumentPosition.textDocument);
199208
}
200209
}
201-
});
210+
}));
202211

203212
// Listen on the connection
204213
connection.listen();

0 commit comments

Comments
 (0)