GetFirefly/firefly

BigInt switches from proper term to NoneValue in the middle of a function

KronicDeth opened this issue · 1 comments

init.erl

-module(init).
-export([start/0]).
-import(erlang, [convert_time_unit/3, display/1]).
-import(lumen, [is_big_integer/1]).

start() ->
  Time = 1000000000000000000,
  display(is_big_integer(Time)),
  FromHertz = 2,
  ToHertz = 5,
  display(convert_time_unit(Time, FromHertz, ToHertz)),
  display(convert_time_unit(Time, FromHertz, second)),
  display(convert_time_unit(Time, FromHertz, millisecond)),
  display(convert_time_unit(Time, FromHertz, nanosecond)),
  display(convert_time_unit(Time, FromHertz, native)),
  display(convert_time_unit(Time, FromHertz, perf_counter)),
  display(convert_time_unit(Time, second, ToHertz)),
  display(convert_time_unit(Time, second, second)),
  display(convert_time_unit(Time, second, millisecond)),
  display(convert_time_unit(Time, second, nanosecond)),
  display(convert_time_unit(Time, second, native)),
  display(convert_time_unit(Time, second, perf_counter)),
  display(convert_time_unit(Time, millisecond, ToHertz)),
  display(convert_time_unit(Time, millisecond, second)),
  display(convert_time_unit(Time, millisecond, millisecond)),
  display(convert_time_unit(Time, millisecond, nanosecond)),
  display(convert_time_unit(Time, millisecond, native)),
  display(convert_time_unit(Time, millisecond, perf_counter)),
  display(convert_time_unit(Time, microsecond, ToHertz)),
  display(convert_time_unit(Time, microsecond, second)),
  display(convert_time_unit(Time, microsecond, millisecond)),
  display(convert_time_unit(Time, microsecond, nanosecond)),
  display(convert_time_unit(Time, microsecond, native)),
  display(convert_time_unit(Time, microsecond, perf_counter)),
  display(convert_time_unit(Time, nanosecond, ToHertz)),
  display(convert_time_unit(Time, nanosecond, second)),
  display(convert_time_unit(Time, nanosecond, millisecond)),
  display(convert_time_unit(Time, nanosecond, nanosecond)),
  display(convert_time_unit(Time, nanosecond, native)),
  display(convert_time_unit(Time, nanosecond, perf_counter)),
  display(convert_time_unit(Time, native, ToHertz)),
  display(convert_time_unit(Time, native, second)),
  display(convert_time_unit(Time, native, millisecond)),
  display(convert_time_unit(Time, native, nanosecond)),
  display(convert_time_unit(Time, native, native)),
  display(convert_time_unit(Time, native, perf_counter)),
  display(convert_time_unit(Time, perf_counter, ToHertz)),
  display(convert_time_unit(Time, perf_counter, second)),
  display(convert_time_unit(Time, perf_counter, millisecond)),
  display(convert_time_unit(Time, perf_counter, nanosecond)),
  display(convert_time_unit(Time, perf_counter, native)),
  display(convert_time_unit(Time, perf_counter, perf_counter)).

With extra logging

stdout = true
convert_time_unit(1000000000000000000, 2, 5)
2000000000000000000
convert_time_unit(1000000000000000000, 2, second)
500000000000000000
convert_time_unit(1000000000000000000, 2, millisecond)
500000000000000000000
convert_time_unit(1000000000000000000, 2, nanosecond)
500000000000000000000000000
convert_time_unit(1000000000000000000, 2, native)
500000000000000000000
convert_time_unit(1000000000000000000, 2, perf_counter)
500000000000000000000
convert_time_unit(1000000000000000000, second, 5)
5000000000000000000
convert_time_unit(1000000000000000000, second, second)
1000000000000000000
convert_time_unit(1000000000000000000, second, millisecond)
1000000000000000000000
convert_time_unit(1000000000000000000, second, nanosecond)
1000000000000000000000000000
convert_time_unit(1000000000000000000, second, native)
1000000000000000000000
convert_time_unit(1000000000000000000, second, perf_counter)
1000000000000000000000
convert_time_unit(1000000000000000000, millisecond, 5)
5000000000000000
convert_time_unit(1000000000000000000, millisecond, second)
1000000000000000
convert_time_unit(1000000000000000000, millisecond, millisecond)
1000000000000000000
convert_time_unit(1000000000000000000, millisecond, nanosecond)
1000000000000000000000000
convert_time_unit(1000000000000000000, millisecond, native)
1000000000000000000
convert_time_unit(1000000000000000000, millisecond, perf_counter)
1000000000000000000
convert_time_unit(1000000000000000000, microsecond, 5)
5000000000000
convert_time_unit(1000000000000000000, microsecond, second)
1000000000000
convert_time_unit(1000000000000000000, microsecond, millisecond)
1000000000000000
convert_time_unit(1000000000000000000, microsecond, nanosecond)
1000000000000000000000
convert_time_unit(1000000000000000000, microsecond, native)
1000000000000000
convert_time_unit(1000000000000000000, microsecond, perf_counter)
1000000000000000
convert_time_unit(1000000000000000000, nanosecond, 5)
5000000000
convert_time_unit(1000000000000000000, nanosecond, second)
1000000000
convert_time_unit(1000000000000000000, nanosecond, millisecond)
1000000000000
convert_time_unit(1000000000000000000, nanosecond, nanosecond)
1000000000000000000
convert_time_unit(1000000000000000000, nanosecond, native)
1000000000000
convert_time_unit(1000000000000000000, nanosecond, perf_counter)
1000000000000
convert_time_unit(1000000000000000000, native, 5)
5000000000000000
convert_time_unit(1000000000000000000, native, second)
1000000000000000
convert_time_unit(1000000000000000000, native, millisecond)
1000000000000000000
convert_time_unit(1000000000000000000, native, nanosecond)
1000000000000000000000000
convert_time_unit(1000000000000000000, native, native)
1000000000000000000
convert_time_unit(1000000000000000000, native, perf_counter)
1000000000000000000
convert_time_unit(1000000000000000000, perf_counter, 5)
5000000000000000
convert_time_unit(1000000000000000000, perf_counter, second)
1000000000000000
convert_time_unit(1000000000000000000, perf_counter, millisecond)
1000000000000000000
convert_time_unit(1000000000000000000, perf_counter, nanosecond)
1000000000000000000000000
convert_time_unit(NoneValue { backtrace: <disabled> }, perf_counter, native)

Fixed by #541