summaryrefslogtreecommitdiff
path: root/test/prism/unescape_test.rb
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2023-10-11 13:58:00 -0400
committerKevin Newton <kddnewton@gmail.com>2023-10-13 15:31:30 -0400
commitd0614b5254d1767cdffdd32f13897dc10facc6a2 (patch)
tree8d56dd7cfe9a5700da2e447da3fb6cf466001184 /test/prism/unescape_test.rb
parentad46fc093b1344b4129ef5199060402e9270b652 (diff)
[ruby/prism] Split up lines in tilde heredocs
https://github.com/ruby/prism/commit/21fad0c2ce
Diffstat (limited to 'test/prism/unescape_test.rb')
-rw-r--r--test/prism/unescape_test.rb54
1 files changed, 34 insertions, 20 deletions
diff --git a/test/prism/unescape_test.rb b/test/prism/unescape_test.rb
index de4d1bf1b9..2e7e9fcd3e 100644
--- a/test/prism/unescape_test.rb
+++ b/test/prism/unescape_test.rb
@@ -67,6 +67,20 @@ module Prism
def prism_result(escape) = prism(escape, &:unescaped)
end
+ class Heredoc < Base
+ def ruby_result(escape) = ruby(escape, &:itself)
+ def prism_result(escape)
+ prism(escape) do |node|
+ case node.type
+ when :interpolated_string_node, :interpolated_x_string_node
+ node.parts.flat_map(&:unescaped).join
+ else
+ node.unescaped
+ end
+ end
+ end
+ end
+
class RegExp < Base
def ruby_result(escape) = ruby(escape, &:source)
def prism_result(escape) = prism(escape, &:unescaped)
@@ -94,30 +108,30 @@ module Prism
escapes = [*ascii, *ascii8, *newlines, *octal, *hex2, *hex4, *hex6, *ctrls]
contexts = [
- [Context::String.new("?", ""), escapes],
- [Context::String.new("'", "'"), escapes],
- [Context::String.new("\"", "\""), escapes],
- [Context::String.new("%q[", "]"), escapes],
- [Context::String.new("%Q[", "]"), escapes],
- [Context::String.new("%[", "]"), escapes],
- [Context::String.new("`", "`"), escapes],
- [Context::String.new("%x[", "]"), escapes],
- [Context::String.new("<<H\n", "\nH"), escapes],
- [Context::String.new("<<'H'\n", "\nH"), escapes],
- [Context::String.new("<<\"H\"\n", "\nH"), escapes],
- [Context::String.new("<<`H`\n", "\nH"), escapes],
+ [Context::String.new("?", ""), escapes],
+ [Context::String.new("'", "'"), escapes],
+ [Context::String.new("\"", "\""), escapes],
+ [Context::String.new("%q[", "]"), escapes],
+ [Context::String.new("%Q[", "]"), escapes],
+ [Context::String.new("%[", "]"), escapes],
+ [Context::String.new("`", "`"), escapes],
+ [Context::String.new("%x[", "]"), escapes],
+ [Context::String.new("<<H\n", "\nH"), escapes],
+ [Context::String.new("<<'H'\n", "\nH"), escapes],
+ [Context::String.new("<<\"H\"\n", "\nH"), escapes],
+ [Context::String.new("<<`H`\n", "\nH"), escapes],
[Context::String.new("<<-H\n", "\nH"), escapes],
[Context::String.new("<<-'H'\n", "\nH"), escapes],
[Context::String.new("<<-\"H\"\n", "\nH"), escapes],
[Context::String.new("<<-`H`\n", "\nH"), escapes],
- # [Context::String.new("<<~H\n", "\nH"), escapes],
- # [Context::String.new("<<~'H'\n", "\nH"), escapes],
- # [Context::String.new("<<~\"H\"\n", "\nH"), escapes],
- # [Context::String.new("<<~`H`\n", "\nH"), escapes],
- [Context::List.new("%w[", "]"), escapes],
- [Context::List.new("%W[", "]"), escapes],
- [Context::List.new("%i[", "]"), escapes],
- [Context::List.new("%I[", "]"), escapes],
+ [Context::Heredoc.new("<<~H\n", "\nH"), escapes],
+ [Context::Heredoc.new("<<~'H'\n", "\nH"), escapes],
+ [Context::Heredoc.new("<<~\"H\"\n", "\nH"), escapes],
+ [Context::Heredoc.new("<<~`H`\n", "\nH"), escapes],
+ [Context::List.new("%w[", "]"), escapes],
+ [Context::List.new("%W[", "]"), escapes],
+ [Context::List.new("%i[", "]"), escapes],
+ [Context::List.new("%I[", "]"), escapes],
# [Context::Symbol.new("%s[", "]"), escapes],
# [Context::Symbol.new(":'", "'"), escapes],
# [Context::Symbol.new(":\"", "\""), escapes],