debt - less TPromise usage

This commit is contained in:
Johannes Rieken
2018-10-01 14:01:17 +02:00
parent 258f8dc822
commit 81b995a25d
8 changed files with 45 additions and 53 deletions

View File

@@ -9,7 +9,6 @@ import { toErrorMessage } from 'vs/base/common/errorMessage';
import { IModelService, shouldSynchronizeModel } from 'vs/editor/common/services/modelService';
import { IDisposable, dispose, IReference } from 'vs/base/common/lifecycle';
import { TextFileModelChangeEvent, ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { TPromise } from 'vs/base/common/winjs.base';
import { IFileService } from 'vs/platform/files/common/files';
import { IModeService } from 'vs/editor/common/services/modeService';
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
@@ -176,10 +175,10 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
$tryOpenDocument(_uri: UriComponents): Thenable<any> {
const uri = URI.revive(_uri);
if (!uri.scheme || !(uri.fsPath || uri.authority)) {
return TPromise.wrapError(new Error(`Invalid uri. Scheme and authority or path must be set.`));
return Promise.reject(new Error(`Invalid uri. Scheme and authority or path must be set.`));
}
let promise: TPromise<boolean>;
let promise: Thenable<boolean>;
switch (uri.scheme) {
case Schemas.untitled:
promise = this._handleUnititledScheme(uri);
@@ -192,14 +191,14 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
return promise.then(success => {
if (!success) {
return TPromise.wrapError(new Error('cannot open ' + uri.toString()));
return Promise.reject(new Error('cannot open ' + uri.toString()));
} else if (!this._modelIsSynced[uri.toString()]) {
return TPromise.wrapError(new Error('cannot open ' + uri.toString() + '. Detail: Files above 50MB cannot be synchronized with extensions.'));
return Promise.reject(new Error('cannot open ' + uri.toString() + '. Detail: Files above 50MB cannot be synchronized with extensions.'));
} else {
return undefined;
}
}, err => {
return TPromise.wrapError(new Error('cannot open ' + uri.toString() + '. Detail: ' + toErrorMessage(err)));
return Promise.reject(new Error('cannot open ' + uri.toString() + '. Detail: ' + toErrorMessage(err)));
});
}
@@ -207,7 +206,7 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
return this._doCreateUntitled(void 0, options ? options.language : void 0, options ? options.content : void 0);
}
private _handleAsResourceInput(uri: URI): TPromise<boolean> {
private _handleAsResourceInput(uri: URI): Thenable<boolean> {
return this._textModelResolverService.createModelReference(uri).then(ref => {
this._modelReferenceCollection.add(ref);
const result = !!ref.object;
@@ -215,17 +214,17 @@ export class MainThreadDocuments implements MainThreadDocumentsShape {
});
}
private _handleUnititledScheme(uri: URI): TPromise<boolean> {
private _handleUnititledScheme(uri: URI): Thenable<boolean> {
let asFileUri = uri.with({ scheme: Schemas.file });
return this._fileService.resolveFile(asFileUri).then(stats => {
// don't create a new file ontop of an existing file
return TPromise.wrapError<boolean>(new Error('file already exists on disk'));
return Promise.reject(new Error('file already exists on disk'));
}, err => {
return this._doCreateUntitled(uri).then(resource => !!resource);
});
}
private _doCreateUntitled(resource?: URI, modeId?: string, initialValue?: string): TPromise<URI> {
private _doCreateUntitled(resource?: URI, modeId?: string, initialValue?: string): Thenable<URI> {
return this._untitledEditorService.loadOrCreate({
resource,
modeId,

View File

@@ -11,7 +11,6 @@ import { disposed } from 'vs/base/common/errors';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { equals as objectEquals } from 'vs/base/common/objects';
import { URI, UriComponents } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { IBulkEditService } from 'vs/editor/browser/services/bulkEditService';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { IRange } from 'vs/editor/common/core/range';
@@ -164,33 +163,33 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
$trySetSelections(id: string, selections: ISelection[]): Thenable<void> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setSelections(selections);
return TPromise.as(null);
return Promise.resolve(null);
}
$trySetDecorations(id: string, key: string, ranges: IDecorationOptions[]): Thenable<void> {
key = `${this._instanceId}-${key}`;
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setDecorations(key, ranges);
return TPromise.as(null);
return Promise.resolve(null);
}
$trySetDecorationsFast(id: string, key: string, ranges: number[]): Thenable<void> {
key = `${this._instanceId}-${key}`;
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setDecorationsFast(key, ranges);
return TPromise.as(null);
return Promise.resolve(null);
}
$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): Thenable<void> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).revealRange(range, revealType);
return undefined;
@@ -198,17 +197,17 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): Thenable<void> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setConfiguration(options);
return TPromise.as(null);
return Promise.resolve(null);
}
$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Thenable<boolean> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError<boolean>(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
return TPromise.as(this._documentsAndEditors.getEditor(id).applyEdits(modelVersionId, edits, opts));
return Promise.resolve(this._documentsAndEditors.getEditor(id).applyEdits(modelVersionId, edits, opts));
}
$tryApplyWorkspaceEdit(dto: WorkspaceEditDto): Thenable<boolean> {
@@ -218,9 +217,9 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
$tryInsertSnippet(id: string, template: string, ranges: IRange[], opts: IUndoStopOptions): Thenable<boolean> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError<boolean>(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
return TPromise.as(this._documentsAndEditors.getEditor(id).insertSnippet(template, ranges, opts));
return Promise.resolve(this._documentsAndEditors.getEditor(id).insertSnippet(template, ranges, opts));
}
$registerTextEditorDecorationType(key: string, options: IDecorationRenderOptions): void {
@@ -239,7 +238,7 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
const editor = this._documentsAndEditors.getEditor(id);
if (!editor) {
return TPromise.wrapError<ILineChange[]>(new Error('No such TextEditor'));
return Promise.reject(new Error('No such TextEditor'));
}
const codeEditor = editor.getCodeEditor();
@@ -248,16 +247,16 @@ export class MainThreadTextEditors implements MainThreadTextEditorsShape {
const [diffEditor] = diffEditors.filter(d => d.getOriginalEditor().getId() === codeEditorId || d.getModifiedEditor().getId() === codeEditorId);
if (diffEditor) {
return TPromise.as(diffEditor.getLineChanges());
return Promise.resolve(diffEditor.getLineChanges());
}
const dirtyDiffContribution = codeEditor.getContribution('editor.contrib.dirtydiff');
if (dirtyDiffContribution) {
return TPromise.as((dirtyDiffContribution as any).getChanges());
return Promise.resolve((dirtyDiffContribution as any).getChanges());
}
return TPromise.as([]);
return Promise.resolve([]);
}
}
@@ -277,7 +276,7 @@ CommandsRegistry.registerCommand('_workbench.open', function (accessor: Services
if (resource && resource.scheme === 'command') {
// do not allow to execute commands from here
return TPromise.as(void 0);
return Promise.resolve(void 0);
}
// finally, delegate to opener service

View File

@@ -5,7 +5,6 @@
'use strict';
import { URI } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { IDisposable } from 'vs/base/common/lifecycle';
import * as vscode from 'vscode';
import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters';
@@ -350,7 +349,7 @@ export class ExtHostApiCommands {
return undefined;
}
if (value.rejectReason) {
return TPromise.wrapError<types.WorkspaceEdit>(new Error(value.rejectReason));
return Promise.reject(new Error(value.rejectReason));
}
return typeConverters.WorkspaceEdit.to(value);
});

View File

@@ -12,7 +12,6 @@ import { Range, Position, EndOfLine } from 'vs/workbench/api/node/extHostTypes';
import * as vscode from 'vscode';
import { getWordAtText, ensureValidWordDefinition } from 'vs/editor/common/model/wordHelper';
import { MainThreadDocumentsShape } from './extHost.protocol';
import { TPromise } from 'vs/base/common/winjs.base';
import { Schemas } from 'vs/base/common/network';
const _modeId2WordDefinition = new Map<string, RegExp>();
@@ -101,7 +100,7 @@ export class ExtHostDocumentData extends MirrorTextModel {
private _save(): Thenable<boolean> {
if (this._isDisposed) {
return TPromise.wrapError<boolean>(new Error('Document has been closed'));
return Promise.reject(new Error('Document has been closed'));
}
return this._proxy.$trySaveDocument(this._uri);
}

View File

@@ -8,7 +8,6 @@ import { Event, Emitter } from 'vs/base/common/event';
import { URI, UriComponents } from 'vs/base/common/uri';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import * as TypeConverters from './extHostTypeConverters';
import { TPromise } from 'vs/base/common/winjs.base';
import * as vscode from 'vscode';
import { MainContext, MainThreadDocumentsShape, ExtHostDocumentsShape, IMainContext } from './extHost.protocol';
import { ExtHostDocumentData, setWordDefinitionFor } from './extHostDocumentData';
@@ -73,7 +72,7 @@ export class ExtHostDocuments implements ExtHostDocumentsShape {
let cached = this._documentsAndEditors.getDocument(uri.toString());
if (cached) {
return TPromise.as(cached);
return Promise.resolve(cached);
}
let promise = this._documentLoader.get(uri.toString());
@@ -83,7 +82,7 @@ export class ExtHostDocuments implements ExtHostDocumentsShape {
return this._documentsAndEditors.getDocument(uri.toString());
}, err => {
this._documentLoader.delete(uri.toString());
return TPromise.wrapError<ExtHostDocumentData>(err);
return Promise.reject(err);
});
this._documentLoader.set(uri.toString(), promise);
}

View File

@@ -5,7 +5,6 @@
'use strict';
import { URI, UriComponents } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { mixin } from 'vs/base/common/objects';
import * as vscode from 'vscode';
import * as typeConvert from 'vs/workbench/api/node/extHostTypeConverters';
@@ -132,7 +131,7 @@ class CodeLensAdapter {
let resolve: Thenable<vscode.CodeLens>;
if (typeof this._provider.resolveCodeLens !== 'function' || lens.isResolved) {
resolve = TPromise.as(lens);
resolve = Promise.resolve(lens);
} else {
resolve = asThenable(() => this._provider.resolveCodeLens(lens, token));
}
@@ -447,7 +446,7 @@ class NavigateTypeAdapter {
resolveWorkspaceSymbol(symbol: WorkspaceSymbolDto, token: CancellationToken): Thenable<WorkspaceSymbolDto> {
if (typeof this._provider.resolveWorkspaceSymbol !== 'function') {
return TPromise.as(symbol);
return Promise.resolve(symbol);
}
const item = this._symbolCache[symbol._id];
@@ -504,7 +503,7 @@ class RenameAdapter {
resolveRenameLocation(resource: URI, position: IPosition, token: CancellationToken): Thenable<modes.RenameLocation & modes.Rejection> {
if (typeof this._provider.prepareRename !== 'function') {
return TPromise.as(undefined);
return Promise.resolve(undefined);
}
let doc = this._documents.getDocumentData(resource).document;
@@ -622,13 +621,13 @@ class SuggestAdapter {
resolveCompletionItem(resource: URI, position: IPosition, suggestion: modes.ISuggestion, token: CancellationToken): Thenable<modes.ISuggestion> {
if (typeof this._provider.resolveCompletionItem !== 'function') {
return TPromise.as(suggestion);
return Promise.resolve(suggestion);
}
const { _parentId, _id } = (<SuggestionDto>suggestion);
const item = this._cache.has(_parentId) && this._cache.get(_parentId)[_id];
if (!item) {
return TPromise.as(suggestion);
return Promise.resolve(suggestion);
}
return asThenable(() => this._provider.resolveCompletionItem(item, token)).then(resolvedItem => {
@@ -928,7 +927,7 @@ export class ExtHostLanguageFeatures implements ExtHostLanguageFeaturesShape {
private _withAdapter<A, R>(handle: number, ctor: { new(...args: any[]): A }, callback: (adapter: A) => Thenable<R>): Thenable<R> {
let adapter = this._adapter.get(handle);
if (!(adapter instanceof ctor)) {
return TPromise.wrapError<R>(new Error('no adapter found'));
return Promise.reject(new Error('no adapter found'));
}
return callback(<any>adapter);
}

View File

@@ -8,7 +8,6 @@
import { ok } from 'vs/base/common/assert';
import { readonly, illegalArgument } from 'vs/base/common/errors';
import { IdGenerator } from 'vs/base/common/idGenerator';
import { TPromise } from 'vs/base/common/winjs.base';
import { ExtHostDocumentData } from 'vs/workbench/api/node/extHostDocumentData';
import { Selection, Range, Position, EndOfLine, TextEditorRevealType, TextEditorLineNumbersStyle, SnippetString } from './extHostTypes';
import { ISingleEditOperation } from 'vs/editor/common/model';
@@ -499,7 +498,7 @@ export class ExtHostTextEditor implements vscode.TextEditor {
edit(callback: (edit: TextEditorEdit) => void, options: { undoStopBefore: boolean; undoStopAfter: boolean; } = { undoStopBefore: true, undoStopAfter: true }): Thenable<boolean> {
if (this._disposed) {
return TPromise.wrapError<boolean>(new Error('TextEditor#edit not possible on closed editors'));
return Promise.reject(new Error('TextEditor#edit not possible on closed editors'));
}
let edit = new TextEditorEdit(this._documentData.document, options);
callback(edit);
@@ -511,7 +510,7 @@ export class ExtHostTextEditor implements vscode.TextEditor {
// return when there is nothing to do
if (editData.edits.length === 0 && !editData.setEndOfLine) {
return TPromise.wrap(true);
return Promise.resolve(true);
}
// check that the edits are not overlapping (i.e. illegal)
@@ -538,7 +537,7 @@ export class ExtHostTextEditor implements vscode.TextEditor {
if (nextRangeStart.isBefore(rangeEnd)) {
// overlapping ranges
return TPromise.wrapError<boolean>(
return Promise.reject(
new Error('Overlapping ranges are not allowed!')
);
}
@@ -562,7 +561,7 @@ export class ExtHostTextEditor implements vscode.TextEditor {
insertSnippet(snippet: SnippetString, where?: Position | Position[] | Range | Range[], options: { undoStopBefore: boolean; undoStopAfter: boolean; } = { undoStopBefore: true, undoStopAfter: true }): Thenable<boolean> {
if (this._disposed) {
return TPromise.wrapError<boolean>(new Error('TextEditor#insertSnippet not possible on closed editors'));
return Promise.reject(new Error('TextEditor#insertSnippet not possible on closed editors'));
}
let ranges: IRange[];
@@ -595,7 +594,7 @@ export class ExtHostTextEditor implements vscode.TextEditor {
private _runOnProxy(callback: () => Thenable<any>): Thenable<ExtHostTextEditor> {
if (this._disposed) {
console.warn('TextEditor is closed/disposed');
return TPromise.as(undefined);
return Promise.resolve(undefined);
}
return callback().then(() => this, err => {
if (!(err instanceof Error && err.name === 'DISPOSED')) {