> This PR fixes the bug which occurred when `Calendar.roll(WEEK_OF_YEAR)` 
> rolled into a minimal first week with an invalid `WEEK_OF_YEAR` and 
> `DAY_OF_WEEK` combo.
> 
> For example, Rolling _Monday, 30 December 2019_ by 1 week produced _Monday, 
> 31 December 2018_, which is incorrect. This is because `WEEK_OF_YEAR` is 
> rolled from 52 to 1, and the original `DAY_OF_WEEK` is 1. However, there is 
> no Monday in week 1 of 2019. This is exposed when a future method calls 
> `Calendar.complete()`, which eventually calculates a `fixedDate` with the 
> invalid `WEEK_OF_YEAR` and `DAY_OF_WEEK` combo.
> 
> To prevent this, a check is added for rolls into week 1, which determines if 
> the first week is minimal. If it is indeed minimal, then it is checked if  
> `DAY_OF_WEEK` exists in that week, if not, `WEEK_OF_YEAR` must be incremented 
> by one.
> 
> After the fix, Rolling _Monday, 30 December 2019_ by 1 week produces _Monday, 
> 7 January 2019_

Justin Lu has updated the pull request incrementally with two additional 
commits since the last revision:

 - Test all possible min week and first day of week combos for bugged date
 - Add safety check that amount is positive

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/13031/files
  - new: https://git.openjdk.org/jdk/pull/13031/files/22387486..fe2f92f0

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=13031&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=13031&range=00-01

  Stats: 106 lines in 2 files changed: 48 ins; 19 del; 39 mod
  Patch: https://git.openjdk.org/jdk/pull/13031.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/13031/head:pull/13031

PR: https://git.openjdk.org/jdk/pull/13031

Reply via email to