Skip to content

Commit 4e2caaa

Browse files
committed
Use array.find in more places of re-implementing it with for loops
1 parent d1b81e2 commit 4e2caaa

14 files changed

Lines changed: 42 additions & 123 deletions

File tree

src/vs/editor/contrib/gotoError/gotoError.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
2020
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
2121
import { MarkerNavigationWidget } from './gotoErrorWidget';
2222
import { compare } from 'vs/base/common/strings';
23-
import { binarySearch } from 'vs/base/common/arrays';
23+
import { binarySearch, find } from 'vs/base/common/arrays';
2424
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
2525
import { onUnexpectedError } from 'vs/base/common/errors';
2626
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
@@ -173,12 +173,7 @@ class MarkerModel {
173173
}
174174

175175
public findMarkerAtPosition(pos: Position): IMarker | undefined {
176-
for (const marker of this._markers) {
177-
if (Range.containsPosition(marker, pos)) {
178-
return marker;
179-
}
180-
}
181-
return undefined;
176+
return find(this._markers, marker => Range.containsPosition(marker, pos));
182177
}
183178

184179
public get total() {

src/vs/editor/test/common/modes/supports/characterPair.test.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { StandardTokenType } from 'vs/editor/common/modes';
88
import { CharacterPairSupport } from 'vs/editor/common/modes/supports/characterPair';
99
import { TokenText, createFakeScopedLineTokens } from 'vs/editor/test/common/modesTestUtils';
1010
import { StandardAutoClosingPairConditional } from 'vs/editor/common/modes/languageConfiguration';
11+
import { find } from 'vs/base/common/arrays';
1112

1213
suite('CharacterPairSupport', () => {
1314

@@ -53,13 +54,8 @@ suite('CharacterPairSupport', () => {
5354
assert.deepEqual(characaterPairSupport.getSurroundingPairs(), []);
5455
});
5556

56-
function findAutoClosingPair(characterPairSupport: CharacterPairSupport, character: string): StandardAutoClosingPairConditional | null {
57-
for (const autoClosingPair of characterPairSupport.getAutoClosingPairs()) {
58-
if (autoClosingPair.open === character) {
59-
return autoClosingPair;
60-
}
61-
}
62-
return null;
57+
function findAutoClosingPair(characterPairSupport: CharacterPairSupport, character: string): StandardAutoClosingPairConditional | undefined {
58+
return find(characterPairSupport.getAutoClosingPairs(), autoClosingPair => autoClosingPair.open === character);
6359
}
6460

6561
function testShouldAutoClose(characterPairSupport: CharacterPairSupport, line: TokenText[], character: string, column: number): boolean {

src/vs/platform/files/test/node/diskFileService.test.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,13 @@ import { isLinux, isWindows } from 'vs/base/common/platform';
2121
import { DisposableStore } from 'vs/base/common/lifecycle';
2222
import { isEqual } from 'vs/base/common/resources';
2323
import { VSBuffer, VSBufferReadable, toVSBufferReadableStream, VSBufferReadableStream, bufferToReadable, bufferToStream } from 'vs/base/common/buffer';
24+
import { find } from 'vs/base/common/arrays';
2425

25-
function getByName(root: IFileStat, name: string): IFileStat | null {
26+
function getByName(root: IFileStat, name: string): IFileStat | undefined {
2627
if (root.children === undefined) {
27-
return null;
28+
return undefined;
2829
}
29-
30-
for (const child of root.children) {
31-
if (child.name === name) {
32-
return child;
33-
}
34-
}
35-
36-
return null;
30+
return find(root.children, child => child.name === name);
3731
}
3832

3933
function toLineByLineReadable(content: string): VSBufferReadable {

src/vs/workbench/browser/editor.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
88
import { Registry } from 'vs/platform/registry/common/platform';
99
import { BaseEditor } from 'vs/workbench/browser/parts/editor/baseEditor';
1010
import { IConstructorSignature0, IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
11+
import { find } from 'vs/base/common/arrays';
1112

1213
export interface IEditorDescriptor {
1314
instantiate(instantiationService: IInstantiationService): BaseEditor;
@@ -140,13 +141,7 @@ class EditorRegistry implements IEditorRegistry {
140141
}
141142

142143
getEditorById(editorId: string): EditorDescriptor | undefined {
143-
for (const editor of this.editors) {
144-
if (editor.getId() === editorId) {
145-
return editor;
146-
}
147-
}
148-
149-
return undefined;
144+
return find(this.editors, editor => editor.getId() === editorId);
150145
}
151146

152147
getEditors(): readonly EditorDescriptor[] {

src/vs/workbench/browser/parts/editor/editorDropTarget.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { GroupDirection, MergeGroupMode } from 'vs/workbench/services/editor/com
1616
import { toDisposable } from 'vs/base/common/lifecycle';
1717
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1818
import { RunOnceScheduler } from 'vs/base/common/async';
19+
import { find } from 'vs/base/common/arrays';
1920

2021
interface IDropOperation {
2122
splitDirection?: GroupDirection;
@@ -544,13 +545,7 @@ export class EditorDropTarget extends Themable {
544545

545546
private findTargetGroupView(child: HTMLElement): IEditorGroupView | undefined {
546547
const groups = this.accessor.groups;
547-
for (const groupView of groups) {
548-
if (isAncestor(child, groupView.element)) {
549-
return groupView;
550-
}
551-
}
552-
553-
return undefined;
548+
return find(groups, groupView => isAncestor(child, groupView.element));
554549
}
555550

556551
private updateContainer(isDraggedOver: boolean): void {

src/vs/workbench/browser/parts/statusbar/statusbarPart.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
2727
import { IStorageService, StorageScope, IWorkspaceStorageChangeEvent } from 'vs/platform/storage/common/storage';
2828
import { Parts, IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
2929
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
30-
import { coalesce } from 'vs/base/common/arrays';
30+
import { coalesce, find } from 'vs/base/common/arrays';
3131
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
3232
import { ToggleStatusbarVisibilityAction } from 'vs/workbench/browser/actions/layoutActions';
3333
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
@@ -176,13 +176,7 @@ class StatusbarViewModel extends Disposable {
176176
}
177177

178178
findEntry(container: HTMLElement): IStatusbarViewModelEntry | undefined {
179-
for (const entry of this._entries) {
180-
if (entry.container === container) {
181-
return entry;
182-
}
183-
}
184-
185-
return undefined;
179+
return find(this._entries, entry => entry.container === container);
186180
}
187181

188182
getEntries(alignment: StatusbarAlignment): IStatusbarViewModelEntry[] {

src/vs/workbench/common/notifications.ts

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { Action } from 'vs/base/common/actions';
1212
import { isErrorWithActions } from 'vs/base/common/errorsWithActions';
1313
import { startsWith } from 'vs/base/common/strings';
1414
import { localize } from 'vs/nls';
15+
import { find, equals } from 'vs/base/common/arrays';
1516

1617
export interface INotificationsModel {
1718

@@ -169,13 +170,7 @@ export class NotificationsModel extends Disposable implements INotificationsMode
169170
}
170171

171172
private findNotification(item: INotificationViewItem): INotificationViewItem | undefined {
172-
for (const notification of this._notifications) {
173-
if (notification.equals(item)) {
174-
return notification;
175-
}
176-
}
177-
178-
return undefined;
173+
return find(this._notifications, notification => notification.equals(item));
179174
}
180175

181176
private createViewItem(notification: INotification): INotificationViewItem | null {
@@ -641,17 +636,7 @@ export class NotificationViewItem extends Disposable implements INotificationVie
641636

642637
const primaryActions = (this._actions && this._actions.primary) || [];
643638
const otherPrimaryActions = (other.actions && other.actions.primary) || [];
644-
if (primaryActions.length !== otherPrimaryActions.length) {
645-
return false;
646-
}
647-
648-
for (let i = 0; i < primaryActions.length; i++) {
649-
if ((primaryActions[i].id + primaryActions[i].label) !== (otherPrimaryActions[i].id + otherPrimaryActions[i].label)) {
650-
return false;
651-
}
652-
}
653-
654-
return true;
639+
return equals(primaryActions, otherPrimaryActions, (a, b) => (a.id + a.label) === (b.id + b.label));
655640
}
656641
}
657642

src/vs/workbench/contrib/output/common/outputLinkComputer.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import * as strings from 'vs/base/common/strings';
1212
import { Range } from 'vs/editor/common/core/range';
1313
import { isWindows } from 'vs/base/common/platform';
1414
import { Schemas } from 'vs/base/common/network';
15+
import { find } from 'vs/base/common/arrays';
1516

1617
export interface ICreateData {
1718
workspaceFolders: string[];
@@ -44,15 +45,9 @@ export class OutputLinkComputer {
4445
});
4546
}
4647

47-
private getModel(uri: string): IMirrorModel | null {
48+
private getModel(uri: string): IMirrorModel | undefined {
4849
const models = this.ctx.getMirrorModels();
49-
for (const model of models) {
50-
if (model.uri.toString() === uri) {
51-
return model;
52-
}
53-
}
54-
55-
return null;
50+
return find(models, model => model.uri.toString() === uri);
5651
}
5752

5853
public computeLinks(uri: string): Promise<ILink[]> {

src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import { DefaultSettingsEditorModel, SettingsEditorModel, WorkspaceConfiguration
3232
import { IMarkerService, IMarkerData, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers';
3333
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
3434
import { EditorOption } from 'vs/editor/common/config/editorOptions';
35+
import { find } from 'vs/base/common/arrays';
3536

3637
export interface IPreferencesRenderer<T> extends IDisposable {
3738
readonly preferencesModel: IPreferencesEditorModel<T>;
@@ -321,12 +322,7 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
321322
const { key, overrideOf } = setting;
322323
if (overrideOf) {
323324
const setting = this.getSetting(overrideOf);
324-
for (const override of setting!.overrides!) {
325-
if (override.key === key) {
326-
return override;
327-
}
328-
}
329-
return undefined;
325+
return find(setting!.overrides!, override => override.key === key);
330326
}
331327
const settingsGroups = this.filterResult ? this.filterResult.filteredGroups : this.preferencesModel.settingsGroups;
332328
return this.getPreference(key, settingsGroups);

src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ import { applyEdits } from 'vs/base/common/jsonEdit';
7777
import { ITextEditor } from 'vs/workbench/common/editor';
7878
import { ITextEditorSelection } from 'vs/platform/editor/common/editor';
7979
import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences';
80+
import { find } from 'vs/base/common/arrays';
8081

8182
export namespace ConfigureTaskAction {
8283
export const ID = 'workbench.action.tasks.configureTaskRunner';
@@ -515,12 +516,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
515516
if (!values) {
516517
return undefined;
517518
}
518-
for (const task of values) {
519-
if (task.matches(key, compareId)) {
520-
return task;
521-
}
522-
}
523-
return undefined;
519+
return find(values, task => task.matches(key, compareId));
524520
});
525521
}
526522

0 commit comments

Comments
 (0)