Improve typescript task slash warning

Part of #74995
This commit is contained in:
Alex Ross
2019-07-30 12:23:31 +02:00
parent 49b51b32b2
commit 8fda22e123
2 changed files with 4 additions and 14 deletions

View File

@@ -73,10 +73,10 @@ class TscTaskProvider implements vscode.TaskProvider {
public resolveTask(_task: vscode.Task): vscode.Task | undefined {
const definition = <TypeScriptTaskDefinition>_task.definition;
const badTsconfig = '\\tsconfig.json';
if ((definition.tsconfig.length > badTsconfig.length) && (definition.tsconfig.substring(definition.tsconfig.length - badTsconfig.length, definition.tsconfig.length) === badTsconfig)) {
const badTsconfig = /\\tsconfig.*\.json/;
if (badTsconfig.exec(definition.tsconfig) !== null) {
// Warn that the task has the wrong slash type
vscode.window.showWarningMessage(localize('badTsConfig', "Typescript Task in tasks.json contains \"\\\\\". Typescript tasks must use \"/\""));
vscode.window.showWarningMessage(localize('badTsConfig', "Typescript Task in tasks.json contains \"\\\\\". Typescript tasks tsconfig must use \"/\""));
}
return undefined;
}

View File

@@ -470,17 +470,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
return this._taskSystem.customExecutionComplete(task, result);
}
private isBadTsConfig(taskId: string | TaskIdentifier | undefined): taskId is string {
const badTsconfig = '\\tsconfig.json';
const tsc = 'tsc';
return typeof taskId === 'string' && (taskId.length > badTsconfig.length) && strings.equalsIgnoreCase(taskId.substring(taskId.length - badTsconfig.length, taskId.length), badTsconfig) && (taskId.substring(0, tsc.length) === tsc);
}
public getTask(folder: IWorkspaceFolder | string, identifier: string | TaskIdentifier, compareId: boolean = false): Promise<Task | undefined> {
if (this.isBadTsConfig(identifier)) {
return Promise.reject(new Error(nls.localize('badTsConfig', "Task '{0}' contains \"\\\\\". Typescript tasks must use \"/\"", identifier)));
}
const name = Types.isString(folder) ? folder : folder.name;
if (this.ignoredWorkspaceFolders.some(ignored => ignored.name === name)) {
return Promise.reject(new Error(nls.localize('TaskServer.folderIgnored', 'The folder {0} is ignored since it uses task version 0.1.0', name)));
@@ -2289,4 +2279,4 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
this._taskSystem!.revealTask(task);
});
}
}
}