
Issue #20503 has been updated by akr (Akira Tanaka). A line continuation (backslash at the end of a line) in a string is a kind of escape sequence. Currently (I believe) "removing white spaces in line head" is done before "interpret escape sequences". The current behavior seems reasonable to me. If we exchange the order of "removing white spaces in line head" and "interpreting escape sequences", spaces after the escaped newline are considered as line head. I think it is not reasonable. For example, the following heredoc will be evaluated as "\nfoo\n". ``` <<~"EOS" \n foo EOS ``` The documentation can be improved: line continuation should be documented as an escape sequence. ---------------------------------------- Misc #20503: Dedenting heredoc line continuation https://bugs.ruby-lang.org/issues/20503#change-108453 * Author: kddnewton (Kevin Newton) * Status: Open ---------------------------------------- When there is a line continuation inside a dedenting heredoc, occasionally it will impact the dedent calculation in interesting ways. I'm not sure if it's a bug, or if my understanding is incorrect. ```ruby <<~eos TEXT eos ``` In this case the string is `"TEXT\n", because the common whitespace is 2 and it's removed from the only line. However if there is a line continuation: ```ruby <<~eos \ TEXT eos ``` then the results is `" TEXT\n"`. To me this seems incorrect, because the second line is supposed to be considered as part of the first, which would mean it should have the same result as the first one. So either my understanding is incorrect or this is a bug. Could someone clarify? Thanks! -- https://bugs.ruby-lang.org/