elixir-lang / elixir

Elixir is a dynamic, functional language for building scalable and maintainable applications
https://elixir-lang.org/
Apache License 2.0
24.34k stars 3.36k forks source link

assert from ExUnit cannot compile a match that has binary in it #1525

Closed alco closed 11 years ago

alco commented 11 years ago

This works fine:

iex(1)> {1, nil, <<_::binary>>} = {1, nil, "abc"}
{1, nil, "abc"}

This doesn't:

iex(1)> require ExUnit.Assertions
nil
iex(2)> ExUnit.Assertions.assert {1, nil, "abc"} = {1, nil, "abc"}
{1, nil, "abc"}
iex(3)> ExUnit.Assertions.assert {1, nil, <<_::binary>>} = {1, nil, "abc"}
** (ArgumentError) argument error
    /Users/alco/Documents/git/elixir/lib/elixir/lib/macro.ex:235: Macro.to_string/1
    /Users/alco/Documents/git/elixir/lib/elixir/lib/enum.ex:639: Enum.to_binary/2
    /Users/alco/Documents/git/elixir/lib/elixir/lib/enum.ex:1522: Enumerable.List.reduce/3
    /Users/alco/Documents/git/elixir/lib/elixir/lib/macro.ex:200: Macro.to_string/1
    /Users/alco/Documents/git/elixir/lib/elixir/lib/enum.ex:639: Enum.to_binary/2
    /Users/alco/Documents/git/elixir/lib/elixir/lib/enum.ex:634: Enum."-map_join/3-fun-0-"/4
    /Users/alco/Documents/git/elixir/lib/elixir/lib/enum.ex:1522: Enumerable.List.reduce/3
    /Users/alco/Documents/git/elixir/lib/elixir/lib/macro.ex:205: Macro.to_string/1
alco commented 11 years ago

Same thing with assert_receive.

The actual problem is, in fact,

Macro.to_string quote do: {1, nil, <<_::binary>>}
** (ArgumentError) argument error

as @josevalim suggested.

ericmj commented 11 years ago

@alco Are you on master? This works on my machine.

alco commented 11 years ago

Sorry, I had dirty working tree.