That would be lovely as well. My main question there is if there are 
performance concerns invoking the formatter in such cases? I can't imagine 
it'd be an issue for test failures, but general pattern match exceptions 
seem like they might be more sensitive to such things.

And possibly a relevant question in both cases: How well does this work 
with inspect limits that end up eliding parts of the data?

On Sunday, May 28, 2023 at 12:35:40 PM UTC-4 José Valim wrote:

> If we are going down this path, then my suggestion would be to add this to 
> all of Elixir itself, starting with function clause errors. :) If someone 
> wants to explore this path, please go ahead!
>
> On Sun, May 28, 2023 at 5:13 PM Ben Wilson <benwil...@gmail.com> wrote:
>
>> Agreed. Can the formatter get invoked on output like that I wonder?
>>
>> On Friday, May 26, 2023 at 3:32:02 AM UTC-4 ifu...@gmail.com wrote:
>>
>>> Consider the following code:
>>>
>>> setup do
>>> %{a: 1}
>>> end
>>>
>>> test "test", %{b: b} do
>>> IO.inspect(b)
>>> end
>>>
>>> if we run the test, then it fails with the following error:
>>>   1) test test (SandboxTest)
>>>      test/sandbox_test.exs:8
>>>      ** (FunctionClauseError) no function clause matching in 
>>> SandboxTest."test test"/1
>>>
>>>      The following arguments were given to SandboxTest."test test"/1:
>>>      
>>>          # 1
>>>          %{a: 1, async: false, case: SandboxTest, describe: nil, 
>>> describe_line: nil, file: 
>>> "/home/artur/projects/sandbox/test/sandbox_test.exs", line: 8, module: 
>>> SandboxTest, registered: %{}, test: :"test test", test_type: :test}
>>>      
>>>      code: test "test", %{b: b} do
>>>      stacktrace:
>>>        test/sandbox_test.exs:8: (test)
>>>
>>>
>>> A way better error reporting is present if the test uses assert macro:
>>>
>>> setup do
>>> %{a: 1}
>>> end
>>>
>>> test "test", context do
>>> assert %{b: b} = context
>>> IO.inspect(b)
>>> end
>>>
>>> Error:
>>>   1) test test (SandboxTest)
>>>      test/sandbox_test.exs:9
>>>      match (=) failed
>>>      code:  assert %{b: b} = context
>>>      left:  %{b: b}
>>>      right: %{
>>>               a: 1,
>>>               async: false,
>>>               case: SandboxTest,
>>>               describe: nil,
>>>               describe_line: nil,
>>>               file: "/home/artur/projects/sandbox/test/sandbox_test.exs",
>>>               line: 9,
>>>               module: SandboxTest,
>>>               registered: %{},
>>>               test: :"test test",
>>>               test_type: :test
>>>             }
>>>      stacktrace:
>>>        test/sandbox_test.exs:10: (test)
>>>
>>> It would be great if something similar is reported for the first code 
>>> snippet.
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "elixir-lang-core" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to elixir-lang-co...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elixir-lang-core/513c8678-e03c-40da-9163-9cfd7e9c943bn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/elixir-lang-core/513c8678-e03c-40da-9163-9cfd7e9c943bn%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/5f8ef0b6-0b6f-41d7-90df-73a24c3226f2n%40googlegroups.com.

Reply via email to