Skip to content

Commit

Permalink
Editorial: Fix out-of-range NaNs in date set methods
Browse files Browse the repository at this point in the history
  • Loading branch information
devsnek committed Aug 15, 2020
1 parent 3750b81 commit 837f6c0
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions spec.html
Original file line number Diff line number Diff line change
Expand Up @@ -29645,6 +29645,7 @@ <h1>Date.prototype.setDate ( _date_ )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Let _dt_ be ? ToNumber(_date_).
1. If _t_ is *NaN*, return *NaN*.
1. Let _newDate_ be MakeDate(MakeDay(YearFromTime(_t_), MonthFromTime(_t_), _dt_), TimeWithinDay(_t_)).
1. Let _u_ be TimeClip(UTC(_newDate_)).
1. Set the [[DateValue]] internal slot of this Date object to _u_.
Expand All @@ -29659,6 +29660,7 @@ <h1>Date.prototype.setFullYear ( _year_ [ , _month_ [ , _date_ ] ] )</h1>
1. Let _t_ be ? thisTimeValue(*this* value).
1. If _t_ is *NaN*, set _t_ to *+0*; otherwise, set _t_ to LocalTime(_t_).
1. Let _y_ be ? ToNumber(_year_).
1. If _t_ is *NaN*, return *NaN*.
1. If _month_ is not present, let _m_ be MonthFromTime(_t_); otherwise, let _m_ be ? ToNumber(_month_).
1. If _date_ is not present, let _dt_ be DateFromTime(_t_); otherwise, let _dt_ be ? ToNumber(_date_).
1. Let _newDate_ be MakeDate(MakeDay(_y_, _m_, _dt_), TimeWithinDay(_t_)).
Expand All @@ -29678,6 +29680,7 @@ <h1>Date.prototype.setHours ( _hour_ [ , _min_ [ , _sec_ [ , _ms_ ] ] ] )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Let _h_ be ? ToNumber(_hour_).
1. If _t_ is *NaN*, return *NaN*.
1. If _min_ is not present, let _m_ be MinFromTime(_t_); otherwise, let _m_ be ? ToNumber(_min_).
1. If _sec_ is not present, let _s_ be SecFromTime(_t_); otherwise, let _s_ be ? ToNumber(_sec_).
1. If _ms_ is not present, let _milli_ be msFromTime(_t_); otherwise, let _milli_ be ? ToNumber(_ms_).
Expand All @@ -29698,6 +29701,7 @@ <h1>Date.prototype.setMilliseconds ( _ms_ )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Set _ms_ to ? ToNumber(_ms_).
1. If _t_ is *NaN*, return *NaN*.
1. Let _time_ be MakeTime(HourFromTime(_t_), MinFromTime(_t_), SecFromTime(_t_), _ms_).
1. Let _u_ be TimeClip(UTC(MakeDate(Day(_t_), _time_))).
1. Set the [[DateValue]] internal slot of this Date object to _u_.
Expand All @@ -29711,6 +29715,7 @@ <h1>Date.prototype.setMinutes ( _min_ [ , _sec_ [ , _ms_ ] ] )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Let _m_ be ? ToNumber(_min_).
1. If _t_ is *NaN*, return *NaN*.
1. If _sec_ is not present, let _s_ be SecFromTime(_t_); otherwise, let _s_ be ? ToNumber(_sec_).
1. If _ms_ is not present, let _milli_ be msFromTime(_t_); otherwise, let _milli_ be ? ToNumber(_ms_).
1. Let _date_ be MakeDate(Day(_t_), MakeTime(HourFromTime(_t_), _m_, _s_, _milli_)).
Expand All @@ -29730,6 +29735,7 @@ <h1>Date.prototype.setMonth ( _month_ [ , _date_ ] )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Let _m_ be ? ToNumber(_month_).
1. If _t_ is *NaN*, return *NaN*.
1. If _date_ is not present, let _dt_ be DateFromTime(_t_); otherwise, let _dt_ be ? ToNumber(_date_).
1. Let _newDate_ be MakeDate(MakeDay(YearFromTime(_t_), _m_, _dt_), TimeWithinDay(_t_)).
1. Let _u_ be TimeClip(UTC(_newDate_)).
Expand All @@ -29748,6 +29754,7 @@ <h1>Date.prototype.setSeconds ( _sec_ [ , _ms_ ] )</h1>
<emu-alg>
1. Let _t_ be LocalTime(? thisTimeValue(*this* value)).
1. Let _s_ be ? ToNumber(_sec_).
1. If _t_ is *NaN*, return *NaN*.
1. If _ms_ is not present, let _milli_ be msFromTime(_t_); otherwise, let _milli_ be ? ToNumber(_ms_).
1. Let _date_ be MakeDate(Day(_t_), MakeTime(HourFromTime(_t_), MinFromTime(_t_), _s_, _milli_)).
1. Let _u_ be TimeClip(UTC(_date_)).
Expand Down Expand Up @@ -29778,6 +29785,7 @@ <h1>Date.prototype.setUTCDate ( _date_ )</h1>
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _dt_ be ? ToNumber(_date_).
1. If _t_ is *NaN*, return *NaN*.
1. Let _newDate_ be MakeDate(MakeDay(YearFromTime(_t_), MonthFromTime(_t_), _dt_), TimeWithinDay(_t_)).
1. Let _v_ be TimeClip(_newDate_).
1. Set the [[DateValue]] internal slot of this Date object to _v_.
Expand All @@ -29792,6 +29800,7 @@ <h1>Date.prototype.setUTCFullYear ( _year_ [ , _month_ [ , _date_ ] ] )</h1>
1. Let _t_ be ? thisTimeValue(*this* value).
1. If _t_ is *NaN*, set _t_ to *+0*.
1. Let _y_ be ? ToNumber(_year_).
1. If _t_ is *NaN*, return *NaN*.
1. If _month_ is not present, let _m_ be MonthFromTime(_t_); otherwise, let _m_ be ? ToNumber(_month_).
1. If _date_ is not present, let _dt_ be DateFromTime(_t_); otherwise, let _dt_ be ? ToNumber(_date_).
1. Let _newDate_ be MakeDate(MakeDay(_y_, _m_, _dt_), TimeWithinDay(_t_)).
Expand All @@ -29811,6 +29820,7 @@ <h1>Date.prototype.setUTCHours ( _hour_ [ , _min_ [ , _sec_ [ , _ms_ ] ] ] )</h1
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _h_ be ? ToNumber(_hour_).
1. If _t_ is *NaN*, return *NaN*.
1. If _min_ is not present, let _m_ be MinFromTime(_t_); otherwise, let _m_ be ? ToNumber(_min_).
1. If _sec_ is not present, let _s_ be SecFromTime(_t_); otherwise, let _s_ be ? ToNumber(_sec_).
1. If _ms_ is not present, let _milli_ be msFromTime(_t_); otherwise, let _milli_ be ? ToNumber(_ms_).
Expand All @@ -29831,6 +29841,7 @@ <h1>Date.prototype.setUTCMilliseconds ( _ms_ )</h1>
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _milli_ be ? ToNumber(_ms_).
1. If _t_ is *NaN*, return *NaN*.
1. Let _time_ be MakeTime(HourFromTime(_t_), MinFromTime(_t_), SecFromTime(_t_), _milli_).
1. Let _v_ be TimeClip(MakeDate(Day(_t_), _time_)).
1. Set the [[DateValue]] internal slot of this Date object to _v_.
Expand All @@ -29844,6 +29855,7 @@ <h1>Date.prototype.setUTCMinutes ( _min_ [ , _sec_ [ , _ms_ ] ] )</h1>
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _m_ be ? ToNumber(_min_).
1. If _t_ is *NaN*, return *NaN*.
1. If _sec_ is not present, let _s_ be SecFromTime(_t_).
1. Else,
1. Let _s_ be ? ToNumber(_sec_).
Expand All @@ -29867,6 +29879,7 @@ <h1>Date.prototype.setUTCMonth ( _month_ [ , _date_ ] )</h1>
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _m_ be ? ToNumber(_month_).
1. If _t_ is *NaN*, return *NaN*.
1. If _date_ is not present, let _dt_ be DateFromTime(_t_).
1. Else,
1. Let _dt_ be ? ToNumber(_date_).
Expand All @@ -29887,6 +29900,7 @@ <h1>Date.prototype.setUTCSeconds ( _sec_ [ , _ms_ ] )</h1>
<emu-alg>
1. Let _t_ be ? thisTimeValue(*this* value).
1. Let _s_ be ? ToNumber(_sec_).
1. If _t_ is *NaN*, return *NaN*.
1. If _ms_ is not present, let _milli_ be msFromTime(_t_).
1. Else,
1. Let _milli_ be ? ToNumber(_ms_).
Expand Down

0 comments on commit 837f6c0

Please sign in to comment.