Only escape contents outside of interpolation, closes #9812
This commit is contained in:
@@ -1022,11 +1022,13 @@ defmodule Macro do
|
||||
|
||||
binary when is_binary(binary) ->
|
||||
binary = inspect_no_limit(binary)
|
||||
binary_part(binary, 1, byte_size(binary) - 2)
|
||||
|
||||
binary
|
||||
|> binary_part(1, byte_size(binary) - 2)
|
||||
|> escape_sigil(left)
|
||||
end)
|
||||
|
||||
escaped = escape_sigil(parts, left)
|
||||
<<left::binary, escaped::binary, right::binary>>
|
||||
<<left::binary, parts::binary, right::binary>>
|
||||
end
|
||||
|
||||
defp escape_sigil(parts, "("), do: String.replace(parts, ")", ~S"\)")
|
||||
|
||||
@@ -344,6 +344,7 @@ defmodule MacroTest do
|
||||
assert Macro.to_string(quote(do: ~R"\n123")) == ~S/~R"\n123"/
|
||||
|
||||
assert Macro.to_string(quote(do: ~S["'(123)'"])) == ~S/~S["'(123)'"]/
|
||||
assert Macro.to_string(quote(do: ~s"#{"foo"}")) == ~S/~s"#{"foo"}"/
|
||||
|
||||
assert Macro.to_string(
|
||||
quote do
|
||||
@@ -704,6 +705,12 @@ defmodule MacroTest do
|
||||
assert Macro.to_string(quote(do: 'abc')) == "'abc'"
|
||||
end
|
||||
|
||||
test "string" do
|
||||
assert Macro.to_string(quote(do: "")) == ~S/""/
|
||||
assert Macro.to_string(quote(do: "abc")) == ~S/"abc"/
|
||||
assert Macro.to_string(quote(do: "#{"abc"}")) == ~S/"#{"abc"}"/
|
||||
end
|
||||
|
||||
test "last arg keyword list" do
|
||||
assert Macro.to_string(quote(do: foo([]))) == "foo([])"
|
||||
assert Macro.to_string(quote(do: foo(x: y))) == "foo(x: y)"
|
||||
|
||||
Reference in New Issue
Block a user