Skip to content

Commit b4964bc

Browse files
committed
Replace some common index based for loops with for-of loops
Replaces many loops of the form: ```js for (let i = 0; i < elements.length; ++i) { const i = elements[i]; ... } ``` with: ```js for (const element of elements) { ... } ``` Mix of a horrible regex based find/replace and manual touch ups
1 parent dc261e0 commit b4964bc

74 files changed

Lines changed: 139 additions & 227 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build/lib/standalone.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ export function createESMSourcesAndResources2(options: IOptions2): void {
139139
};
140140

141141
const allFiles = walkDirRecursive(SRC_FOLDER);
142-
for (let i = 0; i < allFiles.length; i++) {
143-
const file = allFiles[i];
142+
for (const file of allFiles) {
144143

145144
if (options.ignores.indexOf(file.replace(/\\/g, '/')) >= 0) {
146145
continue;
@@ -242,8 +241,7 @@ export function createESMSourcesAndResources2(options: IOptions2): void {
242241
function toggleComments(fileContents: string): string {
243242
let lines = fileContents.split(/\r\n|\r|\n/);
244243
let mode = 0;
245-
for (let i = 0; i < lines.length; i++) {
246-
const line = lines[i];
244+
for (const line of lines) {
247245

248246
if (mode === 0) {
249247
if (/\/\/ ESM-comment-begin/.test(line)) {

build/lib/treeshaking.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ export interface ITreeShakingResult {
6161
}
6262

6363
function printDiagnostics(diagnostics: ReadonlyArray<ts.Diagnostic>): void {
64-
for (let i = 0; i < diagnostics.length; i++) {
65-
const diag = diagnostics[i];
64+
for (const diag of diagnostics) {
6665
let result = '';
6766
if (diag.file) {
6867
result += `${diag.file.fileName}: `;
@@ -465,8 +464,7 @@ function markNodes(languageService: ts.LanguageService, options: ITreeShakingOpt
465464
}
466465

467466
if (black_queue.length === 0) {
468-
for (let i = 0; i < gray_queue.length; i++) {
469-
const node = gray_queue[i];
467+
for (const node of gray_queue) {
470468
const nodeParent = node.parent;
471469
if ((ts.isClassDeclaration(nodeParent) || ts.isInterfaceDeclaration(nodeParent)) && nodeOrChildIsBlack(nodeParent)) {
472470
gray_queue.splice(i, 1);
@@ -610,8 +608,7 @@ function generateResult(languageService: ts.LanguageService, shakeLevel: ShakeLe
610608
}
611609
} else {
612610
let survivingImports: string[] = [];
613-
for (let i = 0; i < node.importClause.namedBindings.elements.length; i++) {
614-
const importNode = node.importClause.namedBindings.elements[i];
611+
for (const importNode of node.importClause.namedBindings.elements) {
615612
if (getColor(importNode) === NodeColor.Black) {
616613
survivingImports.push(importNode.getFullText(sourceFile));
617614
}

build/lib/tslint/noUnexternalizedStringsRule.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,7 @@ class NoUnexternalizedStringsRuleWalker extends Lint.RuleWalker {
148148
if (isStringLiteral(keyArg)) {
149149
this.recordKey(keyArg, this.messageIndex && callInfo ? callInfo.callExpression.arguments[this.messageIndex] : undefined);
150150
} else if (isObjectLiteral(keyArg)) {
151-
for (let i = 0; i < keyArg.properties.length; i++) {
152-
const property = keyArg.properties[i];
151+
for (const property of keyArg.properties) {
153152
if (isPropertyAssignment(property)) {
154153
const name = property.name.getText();
155154
if (name === 'key') {

extensions/emmet/src/abbreviationActions.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,9 @@ function doWrapping(individualLines: boolean, args: any) {
105105

106106
function revertPreview(): Thenable<any> {
107107
return editor.edit(builder => {
108-
for (let i = 0; i < rangesToReplace.length; i++) {
109-
builder.replace(rangesToReplace[i].previewRange, rangesToReplace[i].originalContent);
110-
rangesToReplace[i].previewRange = rangesToReplace[i].originalRange;
108+
for (const rangeToReplace of rangesToReplace) {
109+
builder.replace(rangeToReplace.previewRange, rangeToReplace.originalContent);
110+
rangeToReplace.previewRange = rangeToReplace.originalRange;
111111
}
112112
}, { undoStopBefore: false, undoStopAfter: false });
113113
}

extensions/emmet/src/reflectCssValue.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ function updateCSSNode(editor: TextEditor, property: Property): Thenable<boolean
2929
let currentPrefix = '';
3030

3131
// Find vendor prefix of given property node
32-
for (let i = 0; i < vendorPrefixes.length; i++) {
33-
if (property.name.startsWith(vendorPrefixes[i])) {
34-
currentPrefix = vendorPrefixes[i];
32+
for (const prefix of vendorPrefixes) {
33+
if (property.name.startsWith(prefix)) {
34+
currentPrefix = prefix;
3535
break;
3636
}
3737
}

extensions/emmet/src/selectItemHTML.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,7 @@ function getNextAttribute(selectionStart: vscode.Position, selectionEnd: vscode.
119119
return;
120120
}
121121

122-
for (let i = 0; i < node.attributes.length; i++) {
123-
let attr = node.attributes[i];
124-
122+
for (const attr of node.attributes) {
125123
if (selectionEnd.isBefore(attr.start)) {
126124
// select full attr
127125
return new vscode.Selection(attr.start, attr.end);

extensions/emmet/src/toggleComment.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ export function toggleComment(): Thenable<boolean> | undefined {
3939
return result === 0 ? arr1[0].range.start.character - arr2[0].range.start.character : result;
4040
});
4141
let lastEditPosition = new vscode.Position(0, 0);
42-
for (let i = 0; i < allEdits.length; i++) {
43-
const edits = allEdits[i];
42+
for (const edits of allEdits) {
4443
if (edits[0].range.end.isAfterOrEqual(lastEditPosition)) {
4544
edits.forEach(x => {
4645
editBuilder.replace(x.range, x.newText);
@@ -151,8 +150,8 @@ function toggleCommentStylesheet(selection: vscode.Selection, rootNode: Styleshe
151150
}
152151

153152
function adjustStartNodeCss(node: Node | null, pos: vscode.Position, rootNode: Stylesheet): vscode.Position {
154-
for (let i = 0; i < rootNode.comments.length; i++) {
155-
let commentRange = new vscode.Range(rootNode.comments[i].start, rootNode.comments[i].end);
153+
for (const comment of rootNode.comments) {
154+
let commentRange = new vscode.Range(comment.start, comment.end);
156155
if (commentRange.contains(pos)) {
157156
return pos;
158157
}
@@ -184,8 +183,8 @@ function adjustStartNodeCss(node: Node | null, pos: vscode.Position, rootNode: S
184183
}
185184

186185
function adjustEndNodeCss(node: Node | null, pos: vscode.Position, rootNode: Stylesheet): vscode.Position {
187-
for (let i = 0; i < rootNode.comments.length; i++) {
188-
let commentRange = new vscode.Range(rootNode.comments[i].start, rootNode.comments[i].end);
186+
for (const comment of rootNode.comments) {
187+
let commentRange = new vscode.Range(comment.start, comment.end);
189188
if (commentRange.contains(pos)) {
190189
return pos;
191190
}

extensions/html-language-features/server/src/modes/pathCompletion.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ function pathToSuggestion(p: string, valueBeforeCursor: string, fullValue: strin
139139
}
140140

141141
function resolveWorkspaceRoot(activeDoc: TextDocument, workspaceFolders: WorkspaceFolder[]): string | undefined {
142-
for (let i = 0; i < workspaceFolders.length; i++) {
143-
if (startsWith(activeDoc.uri, workspaceFolders[i].uri)) {
144-
return path.resolve(URI.parse(workspaceFolders[i].uri).fsPath);
142+
for (const folder of workspaceFolders) {
143+
if (startsWith(activeDoc.uri, folder.uri)) {
144+
return path.resolve(URI.parse(folder.uri).fsPath);
145145
}
146146
}
147147
return undefined;

extensions/merge-conflict/src/commandHandler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,9 +237,9 @@ export default class CommandHandler implements vscode.Disposable {
237237
return null;
238238
}
239239

240-
for (let i = 0; i < conflicts.length; i++) {
241-
if (conflicts[i].range.contains(editor.selection.active)) {
242-
return conflicts[i];
240+
for (const conflict of conflicts) {
241+
if (conflict.range.contains(editor.selection.active)) {
242+
return conflict;
243243
}
244244
}
245245

extensions/npm/src/tasks.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ function getPrePostScripts(scripts: any): Set<string> {
7070
'pretest', 'postest', 'prepublishOnly'
7171
]);
7272
let keys = Object.keys(scripts);
73-
for (let i = 0; i < keys.length; i++) {
74-
const script = keys[i];
73+
for (const script of keys) {
7574
const prepost = ['pre' + script, 'post' + script];
7675
prepost.forEach(each => {
7776
if (scripts[each] !== undefined) {
@@ -96,8 +95,7 @@ export async function hasNpmScripts(): Promise<boolean> {
9695
return false;
9796
}
9897
try {
99-
for (let i = 0; i < folders.length; i++) {
100-
let folder = folders[i];
98+
for (const folder of folders) {
10199
if (isAutoDetectionEnabled(folder)) {
102100
let relativePattern = new RelativePattern(folder, '**/package.json');
103101
let paths = await workspace.findFiles(relativePattern, '**/node_modules/**');
@@ -123,13 +121,11 @@ async function detectNpmScripts(): Promise<Task[]> {
123121
return emptyTasks;
124122
}
125123
try {
126-
for (let i = 0; i < folders.length; i++) {
127-
let folder = folders[i];
124+
for (const folder of folders) {
128125
if (isAutoDetectionEnabled(folder)) {
129126
let relativePattern = new RelativePattern(folder, '**/package.json');
130127
let paths = await workspace.findFiles(relativePattern, '**/node_modules/**');
131-
for (let j = 0; j < paths.length; j++) {
132-
let path = paths[j];
128+
for (const path of paths) {
133129
if (!isExcluded(folder, path) && !visitedPackageJsonFiles.has(path.fsPath)) {
134130
let tasks = await provideNpmScriptsForFolder(path);
135131
visitedPackageJsonFiles.add(path.fsPath);

0 commit comments

Comments
 (0)