Skip to content

Commit 09d9ac3

Browse files
authored
Merge pull request #3584 from Earlopain/parser-translator-%W-trailing-backslash
Fix parser translator with trailing backslash in `%W` /`%I` array
2 parents c515f49 + f5c7460 commit 09d9ac3

3 files changed

Lines changed: 324 additions & 151 deletions

File tree

lib/prism/translation/parser/lexer.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,12 @@ def to_a
425425
end
426426

427427
current_string << unescape_string(value, quote_stack.last)
428-
if (backslash_count = token.value[/(\\{1,})\n/, 1]&.length).nil? || backslash_count.even? || !interpolation?(quote_stack.last)
428+
relevant_backslash_count = if quote_stack.last.start_with?("%W", "%I")
429+
0 # the last backslash escapes the newline
430+
else
431+
token.value[/(\\{1,})\n/, 1]&.length || 0
432+
end
433+
if relevant_backslash_count.even? || !interpolation?(quote_stack.last)
429434
tokens << [:tSTRING_CONTENT, [current_string, range(start_offset, start_offset + current_length)]]
430435
break
431436
end

0 commit comments

Comments
 (0)