Skip to content

Commit

Permalink
Update test262 version
Browse files Browse the repository at this point in the history
* fix an error in TemporalObject

Signed-off-by: HyukWoo Park <[email protected]>
  • Loading branch information
clover2123 committed Dec 20, 2023
1 parent 23f8614 commit db59b70
Show file tree
Hide file tree
Showing 3 changed files with 2,703 additions and 321 deletions.
25 changes: 14 additions & 11 deletions src/runtime/TemporalObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3029,21 +3029,24 @@ std::map<TemporalObject::DateTimeUnits, int> TemporalDurationObject::addDuration
duration[TemporalObject::DAY_UNIT] = dateDifference->getDay();
auto result = TemporalDurationObject::balanceDuration(state, duration, largestUnit);
return TemporalDurationObject::createDurationRecord(state, dateDifference->getYear(), dateDifference->getMonth(), dateDifference->getWeek(), result[TemporalObject::DAY_UNIT], result[TemporalObject::HOUR_UNIT], result[TemporalObject::MINUTE_UNIT], result[TemporalObject::SECOND_UNIT], result[TemporalObject::MILLISECOND_UNIT], result[TemporalObject::MICROSECOND_UNIT], result[TemporalObject::NANOSECOND_UNIT]);
}
} else if (relativeTo.asObject()->isTemporalZonedDateTimeObject()) {
auto zonedDateTime = relativeTo.asObject()->asTemporalZonedDateTimeObject();
auto timeZone = zonedDateTime->getTimeZone();
auto calendar = zonedDateTime->getCalendar();
auto intermediateNs = TemporalZonedDateTimeObject::addZonedDateTime(state, zonedDateTime->getNanoseconds(), timeZone, calendar, first);
auto endNs = TemporalZonedDateTimeObject::addZonedDateTime(state, intermediateNs, timeZone, calendar, second);

auto zonedDateTime = relativeTo.asObject()->asTemporalZonedDateTimeObject();
auto timeZone = zonedDateTime->getTimeZone();
auto calendar = zonedDateTime->getCalendar();
auto intermediateNs = TemporalZonedDateTimeObject::addZonedDateTime(state, zonedDateTime->getNanoseconds(), timeZone, calendar, first);
auto endNs = TemporalZonedDateTimeObject::addZonedDateTime(state, intermediateNs, timeZone, calendar, second);
if (largestUnit <= TemporalObject::DAY_UNIT) {
auto diffNs = TemporalInstantObject::differenceInstant(state, zonedDateTime->getNanoseconds(), endNs, 1, TemporalObject::NANOSECOND_UNIT, HALF_EXPAND)->toInt64();
std::map<TemporalObject::DateTimeUnits, int> result = TemporalDurationObject::balanceDuration(state, { { TemporalObject::DAY_UNIT, 0 }, { TemporalObject::HOUR_UNIT, 0 }, { TemporalObject::MINUTE_UNIT, 0 }, { TemporalObject::SECOND_UNIT, 0 }, { TemporalObject::MILLISECOND_UNIT, 0 }, { TemporalObject::MICROSECOND_UNIT, 0 }, { TemporalObject::NANOSECOND_UNIT, diffNs } }, largestUnit);
return TemporalDurationObject::createDurationRecord(state, 0, 0, 0, 0, result[TemporalObject::HOUR_UNIT], result[TemporalObject::MINUTE_UNIT], result[TemporalObject::SECOND_UNIT], result[TemporalObject::MILLISECOND_UNIT], result[TemporalObject::MICROSECOND_UNIT], result[TemporalObject::NANOSECOND_UNIT]);
}

if (largestUnit <= TemporalObject::DAY_UNIT) {
auto diffNs = TemporalInstantObject::differenceInstant(state, zonedDateTime->getNanoseconds(), endNs, 1, TemporalObject::NANOSECOND_UNIT, HALF_EXPAND)->toInt64();
std::map<TemporalObject::DateTimeUnits, int> result = TemporalDurationObject::balanceDuration(state, { { TemporalObject::DAY_UNIT, 0 }, { TemporalObject::HOUR_UNIT, 0 }, { TemporalObject::MINUTE_UNIT, 0 }, { TemporalObject::SECOND_UNIT, 0 }, { TemporalObject::MILLISECOND_UNIT, 0 }, { TemporalObject::MICROSECOND_UNIT, 0 }, { TemporalObject::NANOSECOND_UNIT, diffNs } }, largestUnit);
return TemporalDurationObject::createDurationRecord(state, 0, 0, 0, 0, result[TemporalObject::HOUR_UNIT], result[TemporalObject::MINUTE_UNIT], result[TemporalObject::SECOND_UNIT], result[TemporalObject::MILLISECOND_UNIT], result[TemporalObject::MICROSECOND_UNIT], result[TemporalObject::NANOSECOND_UNIT]);
return TemporalZonedDateTimeObject::differenceZonedDateTime(state, const_cast<BigInt*>(zonedDateTime->getNanoseconds()), endNs, timeZone, calendar, largestUnit, new Object(state, Object::PrototypeIsNull));
}

return TemporalZonedDateTimeObject::differenceZonedDateTime(state, const_cast<BigInt*>(zonedDateTime->getNanoseconds()), endNs, timeZone, calendar, largestUnit, new Object(state, Object::PrototypeIsNull));
ErrorObject::throwBuiltinError(state, ErrorCode::TypeError, "");
return std::map<TemporalObject::DateTimeUnits, int>();
}

TemporalObject::DateTimeUnits TemporalDurationObject::defaultTemporalLargestUnit(std::map<TemporalObject::DateTimeUnits, int> temporalObject)
Expand Down
2 changes: 1 addition & 1 deletion test/test262
Submodule test262 updated 7143 files
Loading

0 comments on commit db59b70

Please sign in to comment.