diff options
author | Kevin Newton <kddnewton@gmail.com> | 2023-10-11 13:58:00 -0400 |
---|---|---|
committer | Kevin Newton <kddnewton@gmail.com> | 2023-10-13 15:31:30 -0400 |
commit | d0614b5254d1767cdffdd32f13897dc10facc6a2 (patch) | |
tree | 8d56dd7cfe9a5700da2e447da3fb6cf466001184 /test/prism/unescape_test.rb | |
parent | ad46fc093b1344b4129ef5199060402e9270b652 (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.rb | 54 |
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], |