diff --git a/js/public/friend/ErrorNumbers.msg b/js/public/friend/ErrorNumbers.msg index 838f70a6540b..725e0753a2e5 100644 --- a/js/public/friend/ErrorNumbers.msg +++ b/js/public/friend/ErrorNumbers.msg @@ -14668,6 +14668,38 @@ seconds precision " ) +MSG_DEF +( +JSMSG_TEMPORAL_PARSER_INCONSISTENT_DATE_SEPARATOR +0 +JSEXN_RANGEERR +" +date +separator +' +- +' +must +be +consistent +" +) +MSG_DEF +( +JSMSG_TEMPORAL_PARSER_INCONSISTENT_TIME_SEPARATOR +0 +JSEXN_RANGEERR +" +time +separator +' +: +' +must +be +consistent +" +) / / Explicit diff --git a/js/src/builtin/temporal/TemporalParser.cpp b/js/src/builtin/temporal/TemporalParser.cpp index 06ac93a6f396..dad704da30fc 100644 --- a/js/src/builtin/temporal/TemporalParser.cpp +++ b/js/src/builtin/temporal/TemporalParser.cpp @@ -6114,6 +6114,9 @@ JSMSG_TEMPORAL_PARSER_MISSING_YEAR Optional : - +bool +hasMonthSeparator += character ( ' @@ -6202,6 +6205,9 @@ JSMSG_TEMPORAL_PARSER_MISSING_MONTH Optional : - +bool +hasDaySeparator += character ( ' @@ -6211,6 +6217,32 @@ character ; / / +Date +separators +must +be +consistent +. +if +( +hasMonthSeparator +! += +hasDaySeparator +) +{ +return +mozilla +: +: +Err +( +JSMSG_TEMPORAL_PARSER_INCONSISTENT_DATE_SEPARATOR +) +; +} +/ +/ DateDay : : @@ -6457,7 +6489,7 @@ Optional : : bool -needsMinutes +hasMinuteSeparator = character ( @@ -6557,11 +6589,8 @@ Optional : : bool -needsSeconds +hasSecondSeparator = -needsMinutes -& -& character ( ' @@ -6627,6 +6656,32 @@ JSMSG_TEMPORAL_PARSER_INVALID_LEAPSECOND } / / +Time +separators +must +be +consistent +. +if +( +hasMinuteSeparator +! += +hasSecondSeparator +) +{ +return +mozilla +: +: +Err +( +JSMSG_TEMPORAL_PARSER_INCONSISTENT_TIME_SEPARATOR +) +; +} +/ +/ TimeFraction : : @@ -6698,7 +6753,7 @@ fractionalPart else if ( -needsSeconds +hasSecondSeparator ) { return @@ -6715,7 +6770,7 @@ JSMSG_TEMPORAL_PARSER_MISSING_SECOND else if ( -needsMinutes +hasMinuteSeparator ) { return @@ -7431,7 +7486,7 @@ Extended empty ] bool -needsMinutes +hasMinuteSeparator = character ( @@ -7540,11 +7595,8 @@ Extended empty ] bool -needsSeconds +hasSecondSeparator = -needsMinutes -& -& character ( ' @@ -7626,6 +7678,32 @@ JSMSG_TEMPORAL_PARSER_INVALID_SECOND ) ; } +/ +/ +Time +separators +must +be +consistent +. +if +( +hasMinuteSeparator +! += +hasSecondSeparator +) +{ +return +mozilla +: +: +Err +( +JSMSG_TEMPORAL_PARSER_INCONSISTENT_TIME_SEPARATOR +) +; +} if ( auto @@ -7657,7 +7735,7 @@ true else if ( -needsSeconds +hasSecondSeparator ) { return @@ -7674,7 +7752,7 @@ JSMSG_TEMPORAL_PARSER_MISSING_SECOND else if ( -needsMinutes +hasMinuteSeparator ) { return