Remove use of for-each from calendar/.

RESOLVED FIXED in 4.8

Status

defect
RESOLVED FIXED
4 years ago
4 years ago

People

(Reporter: arai, Assigned: arai)

Tracking

unspecified
Dependency tree / graph

Details

Attachments

(2 attachments, 2 obsolete attachments)

Assignee

Description

4 years ago
Need to replace non-standard for-each with one of:
  * for-of
  * for-in
  * array.map/array.filter for array-comprehension
as a part of bug 1083470.

converting rules are following:
  * for-each
    * for each (let x in array) { ... }
      -> for (let x of array) { ... }
    * for each (let x in object) { ... }
      -> for (let key in object) { let x = object[key]; ... }
    * for each (let [key, value] in Iterator(object)) { ... }
      -> for (let key in object) { let value = object[key]; ... }
    * for each (let x in array) { ... }
      where array can be null or undefined
      -> if (array) { for (let x of array) { ... } }

  * legacy array comprehension with for-each
    (newer array comprehension is now also a non-standard feature, I'd like to go with map/filter)
    * [EXPR for each (x in array)]
      -> array.map(x => EXPR)
    * [EXPR for each (x in array) if (COND)]
      -> array.filter(x => COND).map(x => EXPR)
    * [x for each (x in array) if (COND)]
      -> array.filter(x => COND)
    * [EXPR for each ([i, x] in Iterator(array)) if (g(x, i)]
      -> array.filter((x, i) => g(x, i)).map((x => EXPR)
    * [EXPR for each (x in arraylike)]
      -> Array.from(arraylike).map(x => EXPR)
    * [EXPR for each (x in string)]
      -> Array.prototype.slice.call(string).map(x => EXPR)
         // Array.from behaves differently for surrogate-pair
Assignee

Updated

4 years ago
Attachment #8687498 - Flags: review?(matthew.mecca) → review?(philipp)
This is my unrotten version of Tooru Fujisawas patch because original patch no longer applies.
Comment on attachment 8687498 [details] [diff] [review]
Remove for-each from calendar/.

As it is a lot of files I'm just reviewing the rules you mentioned and they look ok.

The only files that are problematic are the provider/gdata files. In an effort to support Postbox, I am currently maintaining compatibility to older Gecko versions. If support for |for each| goes away in m-c I'll probably have to break that, but I'd appreciate if we could keep |for of| out of that directory for now. Do you think you could handle that directory manually or revert the changes there?
Attachment #8687498 - Flags: review?(philipp) → feedback+
Assignee

Comment 5

4 years ago
As mentioned in IRC, removed the changes under providers/gdata for now.
Attachment #8687498 - Attachment is obsolete: true
Attachment #8697849 - Attachment is obsolete: true
Attachment #8698537 - Flags: review?(philipp)
Comment on attachment 8698537 [details] [diff] [review]
Remove for-each from calendar/.

Review of attachment 8698537 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks!
Attachment #8698537 - Flags: review?(philipp) → review+
Status: NEW → ASSIGNED
Assignee

Updated

4 years ago
Status: ASSIGNED → RESOLVED
Last Resolved: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 4.8
You need to log in before you can comment on or make changes to this bug.