How about adding a few regression test cases? Cheers, Kasper
On Fri, May 7, 2010 at 12:42 PM, <[email protected]> wrote: > Reviewers: Lasse Reichstein, > > Message: > I discussed quite a bit with lasse about how to best support Date.parse on > timestamps only. The problem is that the spec is not specific on this. I > states > that one should accept strings that conform to 15.9.1.15, but leaves out how > to > handle timestamp only values. There is a number of solutions: > The date part defaults to today > The date part defaults to 2000-01-01 > The date part defaults to 1970-01-01 (probably best solution - but we might > break compatibility with other browsers) > > Description: > Correct issue 696 with Date.parse returning a value when called on a non > date > string. > > The error was introduced in revision 4557 where support was added for > ES5 date time format strings. Because there was no check for a valid > year a random string starting with a non-digit character would be > parsed. > > This change disallows ES5 formatted dates where there is no date > fraction (i.e., with only a timestamp). Since none of the other > browsers support Date.parse on only timestamps I have disabled this > totally instead of just correcting the parser. > > > > Please review this at http://codereview.chromium.org/2017005/show > > SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ > > Affected files: > M src/dateparser.cc > > > Index: src/dateparser.cc > =================================================================== > --- src/dateparser.cc (revision 4607) > +++ src/dateparser.cc (working copy) > @@ -33,16 +33,12 @@ > namespace internal { > > bool DateParser::DayComposer::Write(FixedArray* output) { > - // Set year to 0 by default. > - if (index_ < 1) { > - comp_[index_++] = 1; > - } > + if (index_ < 1) return false; > + // Day and month defaults to 1. > + while (index_ < kSize) { > + comp_[index_++] = 1; > + } > > - // Day and month defaults to 1. > - while (index_ < kSize) { > - comp_[index_++] = 1; > - } > - > int year = 0; // Default year is 0 (=> 2000) for KJS compatibility. > int month = kNone; > int day = kNone; > @@ -62,7 +58,6 @@ > } > } else { > month = named_month_; > - if (index_ < 1) return false; > if (index_ == 1) { > // MD or DM > day = comp_[0]; > > > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
