Do not assume delimiter is always available for sigils

This commit is contained in:
José Valim
2021-05-24 09:42:25 +02:00
parent 1ed4515f5f
commit 2d1c64cc5d
2 changed files with 18 additions and 1 deletions
@@ -85,6 +85,9 @@ defmodule Code.Normalizer.QuotedASTTest do
assert quoted_to_string(quote(do: ~S["'(123)'"])) == ~S/~S["'(123)'"]/
assert quoted_to_string(quote(do: ~s"#{"foo"}")) == ~S/~s"#{"foo"}"/
assert quoted_to_string(quote(do: ~S["'(123)'"]) |> strip_metadata()) == ~S/~S"\"'(123)'\""/
assert quoted_to_string(quote(do: ~s"#{"foo"}") |> strip_metadata()) == ~S/~s"#{"foo"}"/
assert quoted_to_string(
quote do
~s"""
@@ -126,6 +129,13 @@ defmodule Code.Normalizer.QuotedASTTest do
) == ~s[~S"""\n"123"\n"""]
end
test "tuple" do
assert quoted_to_string(quote do: {1, 2}) == "{1, 2}"
assert quoted_to_string(quote do: {1}) == "{1}"
assert quoted_to_string(quote do: {1, 2, 3}) == "{1, 2, 3}"
assert quoted_to_string(quote do: {1, 2, 3, foo: :bar}) == "{1, 2, 3, [foo: :bar]}"
end
test "tuple call" do
assert quoted_to_string(quote(do: alias(Foo.{Bar, Baz, Bong}))) ==
"alias Foo.{Bar, Baz, Bong}"
@@ -580,6 +590,10 @@ defmodule Code.Normalizer.QuotedASTTest do
end
end
defp strip_metadata(ast) do
Macro.prewalk(ast, &Macro.update_meta(&1, fn _ -> [] end))
end
defp quoted_to_string(quoted, opts \\ []) do
doc = Code.quoted_to_algebra(quoted, opts)