Fix hygiene/compile issues (release/1.26) (#14261)

* Fix hygiene issues

* Fix strict compile

* fixes

* compile fix

* more fixes

* more compile fixes

* last one?!

* fix tests
This commit is contained in:
Charles Gagnon
2021-02-11 22:02:55 -08:00
committed by GitHub
parent 4b87a0869f
commit abea315abb
34 changed files with 83 additions and 81 deletions

View File

@@ -8,7 +8,7 @@
*/ */
export class Deferred<T> { export class Deferred<T> {
promise: Promise<T>; promise: Promise<T>;
resolve!: (value?: T | PromiseLike<T>) => void; resolve!: (value: T | PromiseLike<T>) => void;
reject!: (reason?: any) => void; reject!: (reason?: any) => void;
constructor() { constructor() {
this.promise = new Promise<T>((resolve, reject) => { this.promise = new Promise<T>((resolve, reject) => {

View File

@@ -109,7 +109,7 @@ export function getDatabaseStateDisplayText(state: string): string {
* @returns Promise resolving to the user's input if it passed validation, * @returns Promise resolving to the user's input if it passed validation,
* or undefined if the input box was closed for any other reason * or undefined if the input box was closed for any other reason
*/ */
async function promptInputBox(title: string, options: vscode.InputBoxOptions): Promise<string> { async function promptInputBox(title: string, options: vscode.InputBoxOptions): Promise<string | undefined> {
const inputBox = vscode.window.createInputBox(); const inputBox = vscode.window.createInputBox();
inputBox.title = title; inputBox.title = title;
inputBox.prompt = options.prompt; inputBox.prompt = options.prompt;

View File

@@ -7,7 +7,7 @@ import { Deferred } from '../../common/promise';
describe('Deferred', () => { describe('Deferred', () => {
it('Then should be called upon resolution', function (done): void { it('Then should be called upon resolution', function (done): void {
const deferred = new Deferred(); const deferred = new Deferred<void>();
deferred.then(() => { deferred.then(() => {
done(); done();
}); });

View File

@@ -29,7 +29,7 @@ describe('filePicker', function (): void {
should(filePicker.filePathInputBox.value).should.not.be.undefined(); should(filePicker.filePathInputBox.value).should.not.be.undefined();
filePicker.value!.should.equal(initialPath); filePicker.value!.should.equal(initialPath);
filePicker.component().items.length.should.equal(2, 'Filepicker container should have two components'); filePicker.component().items.length.should.equal(2, 'Filepicker container should have two components');
const deferred = new Deferred(); const deferred = new Deferred<void>();
sinon.stub(vscode.window, 'showOpenDialog').callsFake(async (_options) => { sinon.stub(vscode.window, 'showOpenDialog').callsFake(async (_options) => {
deferred.resolve(); deferred.resolve();
return [newFileUri]; return [newFileUri];

View File

@@ -8,7 +8,7 @@
*/ */
export class Deferred<T> { export class Deferred<T> {
promise: Promise<T>; promise: Promise<T>;
resolve!: (value?: T | PromiseLike<T>) => void; resolve!: (value: T | PromiseLike<T>) => void;
reject!: (reason?: any) => void; reject!: (reason?: any) => void;
constructor() { constructor() {
this.promise = new Promise<T>((resolve, reject) => { this.promise = new Promise<T>((resolve, reject) => {

View File

@@ -22,7 +22,7 @@ export class NoAzdataError extends Error implements azdataExt.ErrorWithLink {
*/ */
export function searchForCmd(exe: string): Promise<string> { export function searchForCmd(exe: string): Promise<string> {
// Note : This is separated out to allow for easy test stubbing // Note : This is separated out to allow for easy test stubbing
return new Promise<string>((resolve, reject) => which(exe, (err, path) => err ? reject(err) : resolve(path))); return new Promise<string>((resolve, reject) => which(exe, (err, path) => err ? reject(err) : resolve(path || '')));
} }
/** /**

View File

@@ -52,7 +52,7 @@ describe('HttpClient', function (): void {
it('errors on write stream error', async function (): Promise<void> { it('errors on write stream error', async function (): Promise<void> {
const downloadFolder = os.tmpdir(); const downloadFolder = os.tmpdir();
const mockWriteStream = new PassThrough(); const mockWriteStream = new PassThrough();
const deferredPromise = new Deferred(); const deferredPromise = new Deferred<void>();
sinon.stub(fs, 'createWriteStream').callsFake(() => { sinon.stub(fs, 'createWriteStream').callsFake(() => {
deferredPromise.resolve(); deferredPromise.resolve();
return <any>mockWriteStream; return <any>mockWriteStream;

View File

@@ -9,7 +9,7 @@ import { Deferred } from '../../common/promise';
describe('DeferredPromise', function (): void { describe('DeferredPromise', function (): void {
it('Resolves correctly', async function(): Promise<void> { it('Resolves correctly', async function(): Promise<void> {
const deferred = new Deferred(); const deferred = new Deferred<void>();
deferred.resolve(); deferred.resolve();
await should(deferred.promise).be.resolved(); await should(deferred.promise).be.resolved();
}); });
@@ -21,7 +21,7 @@ describe('DeferredPromise', function (): void {
}); });
it('Chains then correctly', function(done): void { it('Chains then correctly', function(done): void {
const deferred = new Deferred(); const deferred = new Deferred<void>();
deferred.then( () => { deferred.then( () => {
done(); done();
}); });

View File

@@ -27,12 +27,12 @@ export abstract class BasePage {
/** /**
* This method constructs all the elements of the page. * This method constructs all the elements of the page.
*/ */
public async abstract start(): Promise<boolean>; public abstract start(): Promise<boolean>;
/** /**
* This method is called when the user is entering the page. * This method is called when the user is entering the page.
*/ */
public async abstract onPageEnter(): Promise<boolean>; public abstract onPageEnter(): Promise<boolean>;
/** /**
* This method is called when the user is leaving the page. * This method is called when the user is leaving the page.

View File

@@ -445,7 +445,7 @@ export class Git {
const [, letter] = match; const [, letter] = match;
try { try {
const networkPath = await new Promise<string>(resolve => const networkPath = await new Promise<string | undefined>(resolve =>
realpath.native(`${letter}:`, { encoding: 'utf8' }, (err, resolvedPath) => realpath.native(`${letter}:`, { encoding: 'utf8' }, (err, resolvedPath) =>
resolve(err !== null ? undefined : resolvedPath), resolve(err !== null ? undefined : resolvedPath),
), ),

View File

@@ -336,7 +336,7 @@ export function* splitInChunks(array: string[], maxChunkLength: number): Iterabl
interface ILimitedTaskFactory<T> { interface ILimitedTaskFactory<T> {
factory: () => Promise<T>; factory: () => Promise<T>;
c: (value?: T | Promise<T>) => void; c: (value: T | Promise<T>) => void;
e: (error?: any) => void; e: (error?: any) => void;
} }

View File

@@ -25,7 +25,7 @@ export interface PromiseAdapter<T, U> {
( (
value: T, value: T,
resolve: resolve:
(value?: U | PromiseLike<U>) => void, (value: U | PromiseLike<U>) => void,
reject: reject:
(reason: any) => void (reason: any) => void
): any; ): any;

View File

@@ -15,12 +15,12 @@ export abstract class BasePage {
/** /**
* This method constructs all the elements of the page. * This method constructs all the elements of the page.
*/ */
public async abstract start(): Promise<boolean>; public abstract start(): Promise<boolean>;
/** /**
* This method is called when the user is entering the page. * This method is called when the user is entering the page.
*/ */
public async abstract onPageEnter(): Promise<boolean>; public abstract onPageEnter(): Promise<boolean>;
/** /**
* This method is called when the user is leaving the page. * This method is called when the user is leaving the page.

View File

@@ -104,7 +104,7 @@ describe('Add Edit External Languages Tab', () => {
let tab = new AddEditLanguageTab(testContext.apiWrapper.object, parent, languageUpdateModel); let tab = new AddEditLanguageTab(testContext.apiWrapper.object, parent, languageUpdateModel);
should.notEqual(tab.saveButton, undefined); should.notEqual(tab.saveButton, undefined);
let updateCalled = false; let updateCalled = false;
let promise = new Promise(resolve => { let promise = new Promise<void>(resolve => {
parent.onUpdate(() => { parent.onUpdate(() => {
updateCalled = true; updateCalled = true;
resolve(); resolve();

View File

@@ -35,7 +35,7 @@ describe('Edit External Languages Dialog', () => {
dialog.showDialog(); dialog.showDialog();
let updateCalled = false; let updateCalled = false;
let promise = new Promise(resolve => { let promise = new Promise<void>(resolve => {
parent.onUpdate(() => { parent.onUpdate(() => {
updateCalled = true; updateCalled = true;
parent.onUpdatedLanguage(languageUpdateModel); parent.onUpdatedLanguage(languageUpdateModel);

View File

@@ -12,7 +12,7 @@ export class Delayer<T> {
public defaultDelay: number; public defaultDelay: number;
private timeout: any; // Timer private timeout: any; // Timer
private completionPromise: Promise<T> | null; private completionPromise: Promise<T> | null;
private onSuccess: ((value?: T | Thenable<T> | undefined) => void) | null; private onSuccess: ((value: T | PromiseLike<T> | undefined) => void) | null;
private task: ITask<T> | null; private task: ITask<T> | null;
constructor(defaultDelay: number) { constructor(defaultDelay: number) {
@@ -30,7 +30,7 @@ export class Delayer<T> {
} }
if (!this.completionPromise) { if (!this.completionPromise) {
this.completionPromise = new Promise<T>((resolve) => { this.completionPromise = new Promise<T | undefined>((resolve) => {
this.onSuccess = resolve; this.onSuccess = resolve;
}).then(() => { }).then(() => {
this.completionPromise = null; this.completionPromise = null;
@@ -76,4 +76,4 @@ export class Delayer<T> {
this.timeout = null; this.timeout = null;
} }
} }
} }

View File

@@ -14,7 +14,7 @@ export abstract class RemoteBook {
this.remotePath = remotePath; this.remotePath = remotePath;
} }
public async abstract createLocalCopy(): Promise<void>; public abstract createLocalCopy(): Promise<void>;
public setLocalPath(): void { public setLocalPath(): void {
// Save directory on User directory // Save directory on User directory

View File

@@ -17,15 +17,15 @@ export abstract class BasePage {
/** /**
* This method constructs all the elements of the page. * This method constructs all the elements of the page.
*/ */
public async abstract initialize(): Promise<boolean>; public abstract initialize(): Promise<boolean>;
/** /**
* This method is called when the user is entering the page. * This method is called when the user is entering the page.
*/ */
public async abstract onPageEnter(): Promise<void>; public abstract onPageEnter(): Promise<void>;
/** /**
* This method is called when the user is leaving the page. * This method is called when the user is leaving the page.
*/ */
public async abstract onPageLeave(): Promise<boolean>; public abstract onPageLeave(): Promise<boolean>;
} }

View File

@@ -170,7 +170,7 @@ describe('BooksTreeViewTests', function () {
this.beforeAll(async () => { this.beforeAll(async () => {
bookTreeViewProvider = appContext.bookTreeViewProvider; bookTreeViewProvider = appContext.bookTreeViewProvider;
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false); await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
}); });
@@ -276,7 +276,7 @@ describe('BooksTreeViewTests', function () {
this.beforeAll(async () => { this.beforeAll(async () => {
providedbookTreeViewProvider = appContext.providedBookTreeViewProvider; providedbookTreeViewProvider = appContext.providedBookTreeViewProvider;
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([providedbookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('ProvidedBooksTreeViewProvider did not initialize in time'); })]); await Promise.race([providedbookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('ProvidedBooksTreeViewProvider did not initialize in time'); })]);
await providedbookTreeViewProvider.openBook(bookFolderPath, undefined, false, false); await providedbookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
}); });
@@ -359,7 +359,7 @@ describe('BooksTreeViewTests', function () {
this.beforeAll(async () => { this.beforeAll(async () => {
pinnedTreeViewProvider = appContext.pinnedBookTreeViewProvider; pinnedTreeViewProvider = appContext.pinnedBookTreeViewProvider;
bookTreeViewProvider = appContext.bookTreeViewProvider; bookTreeViewProvider = appContext.bookTreeViewProvider;
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
await Promise.race([pinnedTreeViewProvider.initialized, errorCase.then(() => { throw new Error('PinnedTreeViewProvider did not initialize in time'); })]); await Promise.race([pinnedTreeViewProvider.initialized, errorCase.then(() => { throw new Error('PinnedTreeViewProvider did not initialize in time'); })]);
await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false); await bookTreeViewProvider.openBook(bookFolderPath, undefined, false, false);
@@ -478,7 +478,7 @@ describe('BooksTreeViewTests', function () {
index: 0 index: 0
}; };
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator); bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
await bookTreeViewProvider.openBook(rootFolderPath, undefined, false, false); await bookTreeViewProvider.openBook(rootFolderPath, undefined, false, false);
}); });
@@ -556,7 +556,7 @@ describe('BooksTreeViewTests', function () {
index: 0 index: 0
}; };
bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator); bookTreeViewProvider = new BookTreeViewProvider([folder], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
}); });
@@ -585,7 +585,7 @@ describe('BooksTreeViewTests', function () {
} }
}); });
}); });
}) });
}); });
describe('BookTreeViewProvider.getSections', function () { describe('BookTreeViewProvider.getSections', function () {
@@ -646,7 +646,7 @@ describe('BooksTreeViewTests', function () {
index: 0 index: 0
}]; }];
bookTreeViewProvider = new BookTreeViewProvider(folder, mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator); bookTreeViewProvider = new BookTreeViewProvider(folder, mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
}); });
@@ -659,10 +659,12 @@ describe('BooksTreeViewTests', function () {
}); });
after(async function (): Promise<void> { after(async function (): Promise<void> {
if (await exists(rootFolderPath)) await promisify(rimraf)(rootFolderPath); if (await exists(rootFolderPath)) {
await promisify(rimraf)(rootFolderPath);
}
}); });
}); });
}) });
}); });
describe('BookTreeViewProvider.Commands', function () { describe('BookTreeViewProvider.Commands', function () {
@@ -716,7 +718,7 @@ describe('BooksTreeViewTests', function () {
const mockExtensionContext = new MockExtensionContext(); const mockExtensionContext = new MockExtensionContext();
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator); bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
}); });
@@ -913,7 +915,7 @@ describe('BooksTreeViewTests', function () {
const mockExtensionContext = new MockExtensionContext(); const mockExtensionContext = new MockExtensionContext();
bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator); bookTreeViewProvider = new BookTreeViewProvider([], mockExtensionContext, false, 'bookTreeView', NavigationProviders.NotebooksNavigator);
let errorCase = new Promise((resolve, reject) => setTimeout(() => resolve(), 5000)); let errorCase = new Promise<void>((resolve, reject) => setTimeout(() => resolve(), 5000));
await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]); await Promise.race([bookTreeViewProvider.initialized, errorCase.then(() => { throw new Error('BookTreeViewProvider did not initialize in time'); })]);
}); });

View File

@@ -17,7 +17,7 @@ export class TestChildProcessPromise<T> implements cp.ChildProcessPromise {
this.reject = reject; this.reject = reject;
}); });
} }
resolve!: (value?: T | PromiseLike<T>) => void; resolve!: (value: T | PromiseLike<T>) => void;
reject!: (reason?: any) => void; reject!: (reason?: any) => void;
then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2> { then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2> {
return this._promise.then(onFulfilled, onRejected); return this._promise.then(onFulfilled, onRejected);

View File

@@ -93,13 +93,13 @@ describe('WizardPage', () => {
return enabled; return enabled;
}); });
// Used to ensure that we wait until the enabled state is updated for our mocked components before continuing // Used to ensure that we wait until the enabled state is updated for our mocked components before continuing
let enabledDeferred = new Deferred(); let enabledDeferred = new Deferred<void>();
initializeWizardPage(testWizardPage); initializeWizardPage(testWizardPage);
await contentRegistered.promise; await contentRegistered.promise;
await enabledDeferred.promise; await enabledDeferred.promise;
should(stubInputBox.enabled).be.false('Input box should be disabled by default'); should(stubInputBox.enabled).be.false('Input box should be disabled by default');
enabledDeferred = new Deferred(); enabledDeferred = new Deferred<void>();
stubCheckbox.checked = true; stubCheckbox.checked = true;
// Now wait for the enabled state to be updated again // Now wait for the enabled state to be updated again
await enabledDeferred.promise; await enabledDeferred.promise;

View File

@@ -8,6 +8,6 @@ export class Deferred<T> {
this.resolve = resolve; this.resolve = resolve;
this.reject = reject; this.reject = reject;
});; });;
resolve!: (value?: T | PromiseLike<T>) => void; resolve!: (value: T | PromiseLike<T>) => void;
reject!: (reason?: any) => void; reject!: (reason?: any) => void;
} }

View File

@@ -99,11 +99,11 @@ export async function verifyConnectionAndGetOwnerUri(endpoint: mssql.SchemaCompa
let userConnection; let userConnection;
userConnection = connectionList.find(connection => userConnection = connectionList.find(connection =>
(endpoint.connectionDetails['authenticationType'] === 'SqlLogin' (endpoint.connectionDetails['authenticationType'] === 'SqlLogin'
&& endpoint.connectionDetails['serverName'] === connection.options.server && endpoint.connectionDetails['serverName'] === connection.options.server
&& endpoint.connectionDetails['userName'] === connection.options.user && endpoint.connectionDetails['userName'] === connection.options.user
&& (endpoint.connectionDetails['databaseName'].toLowerCase() === connection.options.database.toLowerCase() && (endpoint.connectionDetails['databaseName'].toLowerCase() === connection.options.database.toLowerCase()
|| connection.options.database.toLowerCase() === 'master'))); || connection.options.database.toLowerCase() === 'master')));
if (userConnection === undefined) { if (userConnection === undefined) {
const getConnectionString = loc.getConnectionString(caller); const getConnectionString = loc.getConnectionString(caller);

View File

@@ -113,7 +113,7 @@ export class ModelStore implements IModelStore {
let promiseTracker = this._componentActions[componentId]; let promiseTracker = this._componentActions[componentId];
if (promiseTracker) { if (promiseTracker) {
// Run initial actions first to ensure they're done before later actions (and thus don't overwrite following actions) // Run initial actions first to ensure they're done before later actions (and thus don't overwrite following actions)
new Promise(resolve => { new Promise<void>(resolve => {
promiseTracker.initial.forEach(action => action(component)); promiseTracker.initial.forEach(action => action(component));
resolve(); resolve();
}).then(() => { }).then(() => {

View File

@@ -101,7 +101,7 @@ suite('Dashboard Properties Widget Tests', () => {
let testComponent = new PropertiesWidgetComponent(dashboardService.object, new TestChangeDetectorRef(), undefined, widgetConfig, testLogService); let testComponent = new PropertiesWidgetComponent(dashboardService.object, new TestChangeDetectorRef(), undefined, widgetConfig, testLogService);
return new Promise(resolve => { return new Promise<void>(resolve => {
// because config parsing is done async we need to put our asserts on the thread stack // because config parsing is done async we need to put our asserts on the thread stack
setImmediate(() => { setImmediate(() => {
const propertyItems: PropertyItem[] = (testComponent as any).parseProperties(databaseInfo); const propertyItems: PropertyItem[] = (testComponent as any).parseProperties(databaseInfo);

View File

@@ -240,7 +240,7 @@ export class NotebookSearchView extends SearchView {
public startSearch(query: ITextQuery, excludePatternText: string, includePatternText: string, triggeredOnType: boolean, searchWidget: NotebookSearchWidget): Thenable<void> { public startSearch(query: ITextQuery, excludePatternText: string, includePatternText: string, triggeredOnType: boolean, searchWidget: NotebookSearchWidget): Thenable<void> {
let progressComplete: () => void; let progressComplete: () => void;
this.progressService.withProgress({ location: this.getProgressLocation(), delay: triggeredOnType ? 300 : 0 }, _progress => { this.progressService.withProgress({ location: this.getProgressLocation(), delay: triggeredOnType ? 300 : 0 }, _progress => {
return new Promise(resolve => progressComplete = resolve); return new Promise<void>(resolve => progressComplete = resolve);
}); });
this.state = SearchUIState.Searching; this.state = SearchUIState.Searching;

View File

@@ -56,7 +56,7 @@ export class NotebookMarkdownRenderer {
// signal to code-block render that the element has been created // signal to code-block render that the element has been created
let signalInnerHTML: () => void; let signalInnerHTML: () => void;
const withInnerHTML = new Promise(c => signalInnerHTML = c); const withInnerHTML = new Promise<void>(c => signalInnerHTML = c);
let notebookFolder = this._notebookURI ? path.join(path.dirname(this._notebookURI.fsPath), path.sep) : ''; let notebookFolder = this._notebookURI ? path.join(path.dirname(this._notebookURI.fsPath), path.sep) : '';
if (!this._baseUrls.some(x => x === notebookFolder)) { if (!this._baseUrls.some(x => x === notebookFolder)) {

View File

@@ -433,7 +433,7 @@ export class NotebookService extends Disposable implements INotebookService {
timeout = timeout ?? 30000; timeout = timeout ?? 30000;
let promises: Promise<INotebookProvider>[] = [ let promises: Promise<INotebookProvider>[] = [
providerDescriptor.instanceReady, providerDescriptor.instanceReady,
new Promise<INotebookProvider>((resolve, reject) => setTimeout(() => resolve(), timeout)) new Promise<INotebookProvider>((resolve, reject) => setTimeout(() => resolve(undefined), timeout))
]; ];
return Promise.race(promises); return Promise.race(promises);
} }

View File

@@ -283,7 +283,7 @@ export class TreeUpdateUtils {
reject(new Error(e.errorMessage)); reject(new Error(e.errorMessage));
} }
if (e.connection.id === connection.id) { if (e.connection.id === connection.id) {
resolve(); resolve(undefined);
} }
}); });
}); });

View File

@@ -252,7 +252,7 @@ export class ActionBar extends Disposable implements IActionRunner {
} }
push(arg: IAction | ReadonlyArray<IAction>, options: IActionOptions = {}): void { push(arg: IAction | ReadonlyArray<IAction>, options: IActionOptions = {}): void {
const actions: ReadonlyArray<IAction> = Array.isArray(arg) ? arg : [arg]; const actions: ReadonlyArray<IAction> = Array.isArray(arg) ? arg : [<IAction>arg];
let index = types.isNumber(options.index) ? options.index : null; let index = types.isNumber(options.index) ? options.index : null;

View File

@@ -1396,7 +1396,7 @@ suite('TreeModel - Dynamic data model', () => {
assert.equal(gotTimes, 1); assert.equal(gotTimes, 1);
let p2Complete: () => void; let p2Complete: () => void;
dataModel.promiseFactory = () => { return new Promise((c) => { p2Complete = c; }); }; dataModel.promiseFactory = () => { return new Promise<void>((c) => { p2Complete = c; }); };
const p2 = model.refresh('father'); const p2 = model.refresh('father');
// same situation still // same situation still

View File

@@ -745,7 +745,7 @@ export class CompositeDragAndDropObserver extends Disposable {
} }
} }
export function toggleDropEffect(dataTransfer: DataTransfer | null, dropEffect: string, shouldHaveIt: boolean) { export function toggleDropEffect(dataTransfer: DataTransfer | null, dropEffect: 'none' | 'copy' | 'link' | 'move', shouldHaveIt: boolean) {
if (!dataTransfer) { if (!dataTransfer) {
return; return;
} }

View File

@@ -775,10 +775,10 @@ class UserDataSyncPreview extends Disposable implements IUserDataSyncPreview {
const newResources = this.toUserDataSyncResourceGroups( const newResources = this.toUserDataSyncResourceGroups(
(this.manualSync?.preview || []) (this.manualSync?.preview || [])
.map(([syncResource, syncResourcePreview]) => .map(([syncResource, syncResourcePreview]) =>
([ ([
syncResource, syncResource,
syncResourcePreview.resourcePreviews syncResourcePreview.resourcePreviews
])) ]))
); );
if (!equals(newResources, this._resources, (a, b) => isEqual(a.local, b.local) && a.mergeState === b.mergeState)) { if (!equals(newResources, this._resources, (a, b) => isEqual(a.local, b.local) && a.mergeState === b.mergeState)) {
this._resources = newResources; this._resources = newResources;

View File

@@ -136,16 +136,16 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
private async updateConflicts(conflicts: [SyncResource, IResourcePreview[]][]): Promise<void> { private async updateConflicts(conflicts: [SyncResource, IResourcePreview[]][]): Promise<void> {
// Revive URIs // Revive URIs
this._conflicts = conflicts.map(([syncResource, conflicts]) => this._conflicts = conflicts.map(([syncResource, conflicts]) =>
([ ([
syncResource, syncResource,
conflicts.map(r => conflicts.map(r =>
({ ({
...r, ...r,
localResource: URI.revive(r.localResource), localResource: URI.revive(r.localResource),
remoteResource: URI.revive(r.remoteResource), remoteResource: URI.revive(r.remoteResource),
previewResource: URI.revive(r.previewResource), previewResource: URI.revive(r.previewResource),
})) }))
])); ]));
this._onDidChangeConflicts.fire(this._conflicts); this._onDidChangeConflicts.fire(this._conflicts);
} }
@@ -239,19 +239,19 @@ class ManualSyncTask implements IManualSyncTask {
private deserializePreviews(previews: [SyncResource, ISyncResourcePreview][]): [SyncResource, ISyncResourcePreview][] { private deserializePreviews(previews: [SyncResource, ISyncResourcePreview][]): [SyncResource, ISyncResourcePreview][] {
return previews.map(([syncResource, preview]) => return previews.map(([syncResource, preview]) =>
([ ([
syncResource, syncResource,
{ {
isLastSyncFromCurrentMachine: preview.isLastSyncFromCurrentMachine, isLastSyncFromCurrentMachine: preview.isLastSyncFromCurrentMachine,
resourcePreviews: preview.resourcePreviews.map(r => ({ resourcePreviews: preview.resourcePreviews.map(r => ({
...r, ...r,
localResource: URI.revive(r.localResource), localResource: URI.revive(r.localResource),
remoteResource: URI.revive(r.remoteResource), remoteResource: URI.revive(r.remoteResource),
previewResource: URI.revive(r.previewResource), previewResource: URI.revive(r.previewResource),
acceptedResource: URI.revive(r.acceptedResource), acceptedResource: URI.revive(r.acceptedResource),
})) }))
} }
])); ]));
} }
} }