Skip to content

Commit 24cd297

Browse files
committed
add test
1 parent 5b9f4f9 commit 24cd297

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

lib/elixir/test/elixir/code_test.exs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,48 @@ defmodule CodeTest do
514514
}
515515
end
516516

517+
test "string_to_quoted handles unescape errors properly" do
518+
# Test invalid hex escape character
519+
assert {:error, {meta, message, token}} = Code.string_to_quoted("a.'\\xg'")
520+
521+
assert meta[:line] == 1
522+
assert meta[:column] == 3
523+
524+
assert message ==
525+
"invalid hex escape character, expected \\xHH where H is a hexadecimal digit. Syntax error after: "
526+
527+
assert token == "\\x"
528+
529+
# Test invalid Unicode escape character
530+
assert {:error, {meta2, message2, token2}} = Code.string_to_quoted("a.'\\ug'")
531+
532+
assert meta2[:line] == 1
533+
assert meta2[:column] == 3
534+
535+
assert message2 ==
536+
"invalid Unicode escape character, expected \\uHHHH or \\u{H*} where H is a hexadecimal digit. Syntax error after: "
537+
538+
assert token2 == "\\u"
539+
540+
# Test invalid Unicode code point (surrogate pair)
541+
assert {:error, {meta3, message3, token3}} = Code.string_to_quoted("a.'\\u{D800}'")
542+
543+
assert meta3[:line] == 1
544+
assert meta3[:column] == 3
545+
546+
assert message3 == "invalid or reserved Unicode code point \\u{D800}. Syntax error after: "
547+
assert token3 == "\\u"
548+
549+
# Test Unicode code point beyond valid range
550+
assert {:error, {meta4, message4, token4}} = Code.string_to_quoted("a.'\\u{110000}'")
551+
552+
assert meta4[:line] == 1
553+
assert meta4[:column] == 3
554+
555+
assert message4 == "invalid or reserved Unicode code point \\u{110000}. Syntax error after: "
556+
assert token4 == "\\u"
557+
end
558+
517559
@tag :requires_source
518560
test "compile source" do
519561
assert __MODULE__.__info__(:compile)[:source] == String.to_charlist(__ENV__.file)

0 commit comments

Comments
 (0)