diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index eb30be5..da5e420 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -202,10 +202,31 @@ export class DiagnosticsAdapter extends Adapter { endColumn, message: flattenDiagnosticMessageText(diag.messageText, '\n'), code: diag.code.toString(), - tags: diag.reportsUnnecessary ? [monaco.MarkerTag.Unnecessary] : [] + tags: diag.reportsUnnecessary ? [monaco.MarkerTag.Unnecessary] : [], + relatedInformation: this._convertRelatedInformation(resource, diag.relatedInformation), }; } + private _convertRelatedInformation(resource: Uri, relatedInformation?: ts.DiagnosticRelatedInformation[]): monaco.editor.IRelatedInformation[] { + if (relatedInformation === undefined) + return undefined; + + return relatedInformation.map(info => { + const relatedResource = info.file === undefined ? resource : monaco.Uri.parse(info.file.fileName); + const { lineNumber: startLineNumber, column: startColumn } = this._offsetToPosition(relatedResource, info.start); + const { lineNumber: endLineNumber, column: endColumn } = this._offsetToPosition(relatedResource, info.start + info.length); + + return { + resource: relatedResource, + startLineNumber, + startColumn, + endLineNumber, + endColumn, + message: flattenDiagnosticMessageText(info.messageText, '\n') + }; + }); + } + private _tsDiagnosticCategoryToMarkerSeverity(category: ts.DiagnosticCategory): monaco.MarkerSeverity { switch (category) { case ts.DiagnosticCategory.Error: return monaco.MarkerSeverity.Error