ignore dispose-errors, fixes #30578

This commit is contained in:
Johannes Rieken
2017-08-16 12:00:51 +02:00
parent 96419c25c2
commit b8e8c435cc
3 changed files with 17 additions and 8 deletions
+7 -1
View File
@@ -215,6 +215,12 @@ export function readonly(name?: string): Error {
: new Error('readonly property cannot be changed');
}
export function disposed(what: string): Error {
const result = new Error(`${what} has been disposed`);
result.name = 'DISPOSED';
return result;
}
export interface IErrorOptions {
severity?: Severity;
actions?: IAction[];
@@ -248,4 +254,4 @@ export function getErrorMessage(err: any): string {
}
return String(err);
}
}
@@ -6,6 +6,7 @@
import URI from 'vs/base/common/uri';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { disposed } from 'vs/base/common/errors';
import { TPromise } from 'vs/base/common/winjs.base';
import { ISingleEditOperation, IDecorationRenderOptions, IDecorationOptions, ILineChange } from 'vs/editor/common/editorCommon';
import { ICodeEditorService } from 'vs/editor/common/services/codeEditorService';
@@ -156,7 +157,7 @@ export class MainThreadEditors implements MainThreadEditorsShape {
$trySetSelections(id: string, selections: ISelection[]): TPromise<any> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(new Error('TextEditor disposed'));
return TPromise.wrapError(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setSelections(selections);
return TPromise.as(null);
@@ -164,7 +165,7 @@ export class MainThreadEditors implements MainThreadEditorsShape {
$trySetDecorations(id: string, key: string, ranges: IDecorationOptions[]): TPromise<any> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(new Error('TextEditor disposed'));
return TPromise.wrapError(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setDecorations(key, ranges);
return TPromise.as(null);
@@ -172,7 +173,7 @@ export class MainThreadEditors implements MainThreadEditorsShape {
$tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): TPromise<any> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(new Error('TextEditor disposed'));
return TPromise.wrapError(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).revealRange(range, revealType);
return undefined;
@@ -180,7 +181,7 @@ export class MainThreadEditors implements MainThreadEditorsShape {
$trySetOptions(id: string, options: ITextEditorConfigurationUpdate): TPromise<any> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError(new Error('TextEditor disposed'));
return TPromise.wrapError(disposed(`TextEditor(${id})`));
}
this._documentsAndEditors.getEditor(id).setConfiguration(options);
return TPromise.as(null);
@@ -188,14 +189,14 @@ export class MainThreadEditors implements MainThreadEditorsShape {
$tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): TPromise<boolean> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError<boolean>(new Error('TextEditor disposed'));
return TPromise.wrapError<boolean>(disposed(`TextEditor(${id})`));
}
return TPromise.as(this._documentsAndEditors.getEditor(id).applyEdits(modelVersionId, edits, opts));
}
$tryInsertSnippet(id: string, template: string, ranges: IRange[], opts: IUndoStopOptions): TPromise<boolean> {
if (!this._documentsAndEditors.getEditor(id)) {
return TPromise.wrapError<boolean>(new Error('TextEditor disposed'));
return TPromise.wrapError<boolean>(disposed(`TextEditor(${id})`));
}
return TPromise.as(this._documentsAndEditors.getEditor(id).insertSnippet(template, ranges, opts));
}
@@ -542,8 +542,10 @@ export class ExtHostTextEditor implements vscode.TextEditor {
return TPromise.as(undefined);
}
return callback().then(() => this, err => {
if (err instanceof Error && err.name === 'DISPOSED') {
return;
}
console.warn(err);
return undefined;
});
}
}