mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-06 11:35:54 +08:00
Provide better stacktraces on recent Elixir+OTP versions (#1028)
This commit is contained in:
parent
f5c99737dd
commit
3622d0ee4b
1 changed files with 27 additions and 18 deletions
|
@ -428,7 +428,15 @@ defmodule Livebook.Runtime.Evaluator do
|
|||
defp code_error?(_error), do: false
|
||||
|
||||
# Adapted from https://github.com/elixir-lang/elixir/blob/1c1654c88adfdbef38ff07fc30f6fbd34a542c07/lib/iex/lib/iex/evaluator.ex#L355-L372
|
||||
|
||||
# TODO: Remove else branch once we depend on the versions below
|
||||
if System.otp_release() >= "25" and Version.match?(System.version(), "~> 1.14-dev") do
|
||||
defp prune_stacktrace(stack) do
|
||||
stack
|
||||
|> Enum.reverse()
|
||||
|> Enum.drop_while(&(elem(&1, 0) != :elixir_eval))
|
||||
|> Enum.reverse()
|
||||
end
|
||||
else
|
||||
@elixir_internals [:elixir, :elixir_expand, :elixir_compiler, :elixir_module] ++
|
||||
[:elixir_clauses, :elixir_lexical, :elixir_def, :elixir_map] ++
|
||||
[:elixir_erl, :elixir_erl_clauses, :elixir_erl_pass]
|
||||
|
@ -448,6 +456,7 @@ defmodule Livebook.Runtime.Evaluator do
|
|||
|> Enum.reverse()
|
||||
|> Enum.reject(&(elem(&1, 0) in @elixir_internals))
|
||||
end
|
||||
end
|
||||
|
||||
defp random_id() do
|
||||
:crypto.strong_rand_bytes(20) |> Base.encode32(case: :lower)
|
||||
|
|
Loading…
Add table
Reference in a new issue