Provide better stacktraces on recent Elixir+OTP versions (#1028)

This commit is contained in:
José Valim 2022-02-24 19:19:22 +01:00 committed by GitHub
parent f5c99737dd
commit 3622d0ee4b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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)