mirror of
https://github.com/Microsoft/vscode
synced 2024-10-13 06:48:17 +00:00
debt - remove WinJS.Promise#is and replace usages with async#isThenable or async#isWinJSPromise
This commit is contained in:
parent
f6a6db18c4
commit
d4a4d9588b
|
@ -7,6 +7,7 @@
|
|||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { IDisposable, combinedDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { isThenable } from 'vs/base/common/async';
|
||||
|
||||
export interface ITelemetryData {
|
||||
from?: string;
|
||||
|
@ -225,7 +226,7 @@ export class ActionRunner implements IActionRunner {
|
|||
protected runAction(action: IAction, context?: any): TPromise<any> {
|
||||
const res = context ? action.run(context) : action.run();
|
||||
|
||||
if (TPromise.is(res)) {
|
||||
if (isThenable(res)) {
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
@ -408,8 +408,12 @@ export function timeout(n: number): CancelablePromise<void> {
|
|||
});
|
||||
}
|
||||
|
||||
function isWinJSPromise(candidate: any): candidate is TPromise {
|
||||
return TPromise.is(candidate) && typeof (<TPromise>candidate).done === 'function';
|
||||
/**
|
||||
*
|
||||
* @returns `true` if candidate is a `WinJS.Promise`
|
||||
*/
|
||||
export function isWinJSPromise(candidate: any): candidate is TPromise {
|
||||
return isThenable(candidate) && typeof (<TPromise>candidate).done === 'function';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -10,6 +10,7 @@ import * as paths from 'vs/base/common/paths';
|
|||
import { LRUCache } from 'vs/base/common/map';
|
||||
import { CharCode } from 'vs/base/common/charCode';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { isThenable } from 'vs/base/common/async';
|
||||
|
||||
export interface IExpression {
|
||||
[pattern: string]: boolean | SiblingClause | any;
|
||||
|
@ -646,7 +647,7 @@ function parseExpressionPattern(pattern: string, value: any, options: IGlobOptio
|
|||
|
||||
const clausePattern = when.replace('$(basename)', name);
|
||||
const matched = hasSibling(clausePattern);
|
||||
return TPromise.is(matched) ?
|
||||
return isThenable(matched) ?
|
||||
matched.then(m => m ? pattern : null) :
|
||||
matched ? pattern : null;
|
||||
};
|
||||
|
@ -699,4 +700,4 @@ function aggregateBasenameMatches(parsedPatterns: (ParsedStringPattern | ParsedE
|
|||
const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !(<ParsedStringPattern>parsedPattern).basenames);
|
||||
aggregatedPatterns.push(aggregate);
|
||||
return aggregatedPatterns;
|
||||
}
|
||||
}
|
||||
|
|
2
src/vs/base/common/winjs.base.d.ts
vendored
2
src/vs/base/common/winjs.base.d.ts
vendored
|
@ -29,8 +29,6 @@ export class Promise<T = any> {
|
|||
public static as<T, SomePromise extends PromiseLike<T>>(value: SomePromise): SomePromise;
|
||||
public static as<T>(value: T): Promise<T>;
|
||||
|
||||
public static is(value: any): value is PromiseLike<any>;
|
||||
|
||||
public static timeout(delay: number): Promise<void>;
|
||||
|
||||
public static join<T1, T2>(promises: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
import { Promise as WinJSPromise } from './winjs.base';
|
||||
import * as platform from 'vs/base/common/platform';
|
||||
import { isWinJSPromise } from 'vs/base/common/async';
|
||||
|
||||
/**
|
||||
* A polyfill for the native promises. The implementation is based on
|
||||
|
@ -45,7 +46,7 @@ export class PolyfillPromise<T = any> implements Promise<T> {
|
|||
constructor(callback: (resolve: (value?: T) => void, reject: (err?: any) => void) => any);
|
||||
constructor(initOrPromise: WinJSPromise | ((resolve: (value?: T) => void, reject: (err?: any) => void) => any)) {
|
||||
|
||||
if (WinJSPromise.is(initOrPromise)) {
|
||||
if (isWinJSPromise(initOrPromise)) {
|
||||
this._winjsPromise = initOrPromise;
|
||||
} else {
|
||||
this._winjsPromise = new WinJSPromise((resolve, reject) => {
|
||||
|
|
|
@ -28,6 +28,7 @@ import { overviewRulerWarning, overviewRulerError, overviewRulerInfo } from 'vs/
|
|||
import { ITextModel, IModelDeltaDecoration, IModelDecorationOptions, TrackedRangeStickiness, OverviewRulerLane, DefaultEndOfLine, ITextModelCreationOptions, EndOfLineSequence, IIdentifiedSingleEditOperation, ITextBufferFactory, ITextBuffer, EndOfLinePreference } from 'vs/editor/common/model';
|
||||
import { isFalsyOrEmpty } from 'vs/base/common/arrays';
|
||||
import { basename } from 'vs/base/common/paths';
|
||||
import { isThenable } from 'vs/base/common/async';
|
||||
|
||||
function MODEL_ID(resource: URI): string {
|
||||
return resource.toString();
|
||||
|
@ -500,7 +501,7 @@ export class ModelServiceImpl implements IModelService {
|
|||
public createModel(value: string | ITextBufferFactory, modeOrPromise: TPromise<IMode> | IMode, resource: URI, isForSimpleWidget: boolean = false): ITextModel {
|
||||
let modelData: ModelData;
|
||||
|
||||
if (!modeOrPromise || TPromise.is(modeOrPromise)) {
|
||||
if (!modeOrPromise || isThenable(modeOrPromise)) {
|
||||
modelData = this._createModelData(value, PLAINTEXT_LANGUAGE_IDENTIFIER, resource, isForSimpleWidget);
|
||||
this.setMode(modelData.model, modeOrPromise);
|
||||
} else {
|
||||
|
@ -521,7 +522,7 @@ export class ModelServiceImpl implements IModelService {
|
|||
if (!modeOrPromise) {
|
||||
return;
|
||||
}
|
||||
if (TPromise.is(modeOrPromise)) {
|
||||
if (isThenable(modeOrPromise)) {
|
||||
modeOrPromise.then((mode) => {
|
||||
if (!model.isDisposed()) {
|
||||
model.setMode(mode.getLanguageIdentifier());
|
||||
|
|
2
src/vs/monaco.d.ts
vendored
2
src/vs/monaco.d.ts
vendored
|
@ -72,8 +72,6 @@ declare namespace monaco {
|
|||
public static as<T, SomePromise extends PromiseLike<T>>(value: SomePromise): SomePromise;
|
||||
public static as<T>(value: T): Promise<T>;
|
||||
|
||||
public static is(value: any): value is PromiseLike<any>;
|
||||
|
||||
public static timeout(delay: number): Promise<void>;
|
||||
|
||||
public static join<T1, T2>(promises: [T1 | PromiseLike<T1>, T2 | PromiseLike<T2>]): Promise<[T1, T2]>;
|
||||
|
|
|
@ -56,6 +56,7 @@ import { Dimension, addClass } from 'vs/base/browser/dom';
|
|||
import { IEditorService, ACTIVE_GROUP, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService';
|
||||
import { IEditorGroupsService } from 'vs/workbench/services/group/common/editorGroupsService';
|
||||
import { IUriDisplayService } from 'vs/platform/uriDisplay/common/uriDisplay';
|
||||
import { isThenable } from 'vs/base/common/async';
|
||||
|
||||
const HELP_PREFIX = '?';
|
||||
|
||||
|
@ -157,7 +158,7 @@ export class QuickOpenController extends Component implements IQuickOpenService
|
|||
let arrayPromise: TPromise<string[] | IPickOpenEntry[]>;
|
||||
if (Array.isArray(arg1)) {
|
||||
arrayPromise = TPromise.as(arg1);
|
||||
} else if (TPromise.is(arg1)) {
|
||||
} else if (isThenable(arg1)) {
|
||||
arrayPromise = arg1;
|
||||
} else {
|
||||
throw new Error('illegal input');
|
||||
|
|
|
@ -9,6 +9,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||
import { ProxyIdentifier } from 'vs/workbench/services/extensions/node/proxyIdentifier';
|
||||
import { CharCode } from 'vs/base/common/charCode';
|
||||
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
|
||||
import { isThenable } from 'vs/base/common/async';
|
||||
|
||||
export function SingleProxyRPCProtocol(thing: any): IExtHostContext {
|
||||
return {
|
||||
|
@ -106,7 +107,7 @@ export class TestRPCProtocol implements IExtHostContext {
|
|||
let p: Thenable<any>;
|
||||
try {
|
||||
let result = (<Function>instance[path]).apply(instance, wireArgs);
|
||||
p = TPromise.is(result) ? result : TPromise.as(result);
|
||||
p = isThenable(result) ? result : TPromise.as(result);
|
||||
} catch (err) {
|
||||
p = TPromise.wrapError(err);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue