mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-27 03:54:24 +01:00
Flag errors in TSconfig.json (#19656)
Fixes #3783 From https://github.com/Microsoft/TypeScript/issues/10473
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
'use strict';
|
||||
|
||||
import { env, languages, commands, workspace, window, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, DocumentFilter, Disposable } from 'vscode';
|
||||
import { env, languages, commands, workspace, window, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, DocumentFilter, Disposable, Uri } from 'vscode';
|
||||
|
||||
// This must be the first statement otherwise modules might got loaded with
|
||||
// the wrong locale.
|
||||
@@ -420,51 +420,52 @@ class TypeScriptServiceClientHost implements ITypescriptServiceClientHost {
|
||||
|
||||
/* internal */ configFileDiagnosticsReceived(event: Proto.ConfigFileDiagnosticEvent): void {
|
||||
// See https://github.com/Microsoft/TypeScript/issues/10384
|
||||
/* https://github.com/Microsoft/TypeScript/issues/10473
|
||||
const body = event.body;
|
||||
if (body.diagnostics) {
|
||||
const language = body.triggerFile ? this.findLanguage(body.triggerFile) : this.findLanguage(body.configFile);
|
||||
if (language) {
|
||||
if (body.diagnostics.length === 0) {
|
||||
language.configFileDiagnosticsReceived(body.configFile, []);
|
||||
} else if (body.diagnostics.length >= 1) {
|
||||
workspace.openTextDocument(Uri.file(body.configFile)).then((document) => {
|
||||
let curly: [number, number, number] = undefined;
|
||||
let nonCurly: [number, number, number] = undefined;
|
||||
let diagnostic: Diagnostic;
|
||||
for (let index = 0; index < document.lineCount; index++) {
|
||||
let line = document.lineAt(index);
|
||||
let text = line.text;
|
||||
let firstNonWhitespaceCharacterIndex = line.firstNonWhitespaceCharacterIndex;
|
||||
if (firstNonWhitespaceCharacterIndex < text.length) {
|
||||
if (text.charAt(firstNonWhitespaceCharacterIndex) === '{') {
|
||||
curly = [index, firstNonWhitespaceCharacterIndex, firstNonWhitespaceCharacterIndex + 1];
|
||||
break;
|
||||
} else {
|
||||
let matches = /\s*([^\s]*)(?:\s*|$)/.exec(text.substr(firstNonWhitespaceCharacterIndex));
|
||||
if (matches.length >= 1) {
|
||||
nonCurly = [index, firstNonWhitespaceCharacterIndex, firstNonWhitespaceCharacterIndex + matches[1].length];
|
||||
}
|
||||
}
|
||||
if (!body || !body.diagnostics) {
|
||||
return;
|
||||
}
|
||||
|
||||
const language = body.triggerFile ? this.findLanguage(body.triggerFile) : this.findLanguage(body.configFile);
|
||||
if (!language) {
|
||||
return;
|
||||
}
|
||||
if (body.diagnostics.length === 0) {
|
||||
language.configFileDiagnosticsReceived(body.configFile, []);
|
||||
} else if (body.diagnostics.length >= 1) {
|
||||
workspace.openTextDocument(Uri.file(body.configFile)).then((document) => {
|
||||
let curly: [number, number, number] | undefined = undefined;
|
||||
let nonCurly: [number, number, number] | undefined = undefined;
|
||||
let diagnostic: Diagnostic;
|
||||
for (let index = 0; index < document.lineCount; index++) {
|
||||
const line = document.lineAt(index);
|
||||
const text = line.text;
|
||||
const firstNonWhitespaceCharacterIndex = line.firstNonWhitespaceCharacterIndex;
|
||||
if (firstNonWhitespaceCharacterIndex < text.length) {
|
||||
if (text.charAt(firstNonWhitespaceCharacterIndex) === '{') {
|
||||
curly = [index, firstNonWhitespaceCharacterIndex, firstNonWhitespaceCharacterIndex + 1];
|
||||
break;
|
||||
} else {
|
||||
const matches = /\s*([^\s]*)(?:\s*|$)/.exec(text.substr(firstNonWhitespaceCharacterIndex));
|
||||
if (matches && matches.length >= 1) {
|
||||
nonCurly = [index, firstNonWhitespaceCharacterIndex, firstNonWhitespaceCharacterIndex + matches[1].length];
|
||||
}
|
||||
}
|
||||
let match = curly || nonCurly;
|
||||
if (match) {
|
||||
diagnostic = new Diagnostic(new Range(match[0], match[1], match[0], match[2]), body.diagnostics[0].text);
|
||||
} else {
|
||||
diagnostic = new Diagnostic(new Range(0,0,0,0), body.diagnostics[0].text);
|
||||
}
|
||||
if (diagnostic) {
|
||||
diagnostic.source = language.diagnosticSource;
|
||||
language.configFileDiagnosticsReceived(body.configFile, [diagnostic]);
|
||||
}
|
||||
}, (error) => {
|
||||
language.configFileDiagnosticsReceived(body.configFile, [new Diagnostic(new Range(0,0,0,0), body.diagnostics[0].text)]);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
const match = curly || nonCurly;
|
||||
if (match) {
|
||||
diagnostic = new Diagnostic(new Range(match[0], match[1], match[0], match[2]), body.diagnostics[0].text);
|
||||
} else {
|
||||
diagnostic = new Diagnostic(new Range(0, 0, 0, 0), body.diagnostics[0].text);
|
||||
}
|
||||
if (diagnostic) {
|
||||
diagnostic.source = language.diagnosticSource;
|
||||
language.configFileDiagnosticsReceived(body.configFile, [diagnostic]);
|
||||
}
|
||||
}, (error) => {
|
||||
language.configFileDiagnosticsReceived(body.configFile, [new Diagnostic(new Range(0, 0, 0, 0), body.diagnostics[0].text)]);
|
||||
});
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
private createMarkerDatas(diagnostics: Proto.Diagnostic[], source: string): Diagnostic[] {
|
||||
|
||||
Reference in New Issue
Block a user