Skip to content

Commit 59d50b4

Browse files
committed
Unify logic for Rational and other cases in Time.at
1 parent 9c6d310 commit 59d50b4

File tree

1 file changed

+2
-16
lines changed
  • src/main/ruby/truffleruby/core

1 file changed

+2
-16
lines changed

src/main/ruby/truffleruby/core/time.rb

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -336,25 +336,11 @@ def at(sec, sub_sec=undefined, unit=undefined, **kwargs)
336336
raise ArgumentError, "unexpected unit: #{unit}"
337337
end
338338

339-
if Primitive.undefined?(sub_sec) && Primitive.object_kind_of?(sec, Rational)
340-
rational = Truffle::Type.coerce_to_exact_num(sec)
341-
seconds, fractional_seconds = rational.divmod(1)
342-
nano_fractional_seconds = fractional_seconds * 1_000_000_000
343-
344-
time = Primitive.time_at self, seconds, nano_fractional_seconds.to_i
345-
time = Primitive.time_localtime(time, offset) if offset
346-
return time
347-
elsif Primitive.undefined?(sub_sec)
348-
sub_sec = 0
349-
end
350-
351339
sec = Truffle::Type.coerce_to_exact_num(sec)
352-
sub_sec = Truffle::Type.coerce_to_exact_num(sub_sec)
340+
sub_sec = Primitive.undefined?(sub_sec) ? 0 : Truffle::Type.coerce_to_exact_num(sub_sec)
353341

354-
seconds = sec.to_i
355-
sec_frac = sec % 1.0
342+
seconds, sec_frac = sec.divmod(1)
356343

357-
seconds -= 1 if sec < 0 && sec_frac > 0
358344
nsec = (sec_frac * 1_000_000_000 + 0.5).to_i + (sub_sec * sub_sec_scale).to_i
359345

360346
seconds += nsec / 1_000_000_000

0 commit comments

Comments
 (0)