# New Ticket Created by Christopher Bottoms # Please include the string: [perl #131927] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=131927 >
When heredoc bodies are preceded by spaces, but the body itself contains a tab, sometimes the tab in the resulting heredoc gets converted to spaces. The attached test file demonstrates 5 failing cases (with a total of 10 tests) and one passing case (with one test). I've already submitted a pull request to roast (https://github.com/perl6/roast/pull/295). I will merge it once I get an RT number.
use v6; use Test; plan 11; sub no-r(Str $in) { $in.subst("\r\n", "\n", :g) } #?rakudo skip 'RT not yet assigned' { # Don't change the space in front of any of these, or you'll change the test! # 4 spaces are present between the beginning of the line and the heredoc body my @q1 = q:to/END/; line one line two END is no-r(@q1[0]), "line one\n\tline two\n", 'trim 4 spaces, leave leading tab in line two'; isnt no-r(@q1[0]), "line one\n line two\n", 'should not contain 4 leading spaces at line two.'; # Same exact heredoc body, except it is moved to the right one space # 5 spaces are present between the beginning of the line and the heredoc body my @q2 = q:to/END/; line one line two END is no-r(@q2[0]), "line one\n\tline two\n", 'trim 5 spaces, leave leading tab in line two'; isnt no-r(@q2[0]), "line one\n line two\n", 'should not contain 3 leading spaces in line two.'; # Same heredoc body as the first, except moved to the right two spaces # 6 spaces are present between the beginning of the line and the heredoc body my @q3 = q:to/END/; line one line two END is no-r(@q3[0]), "line one\n\tline two\n", 'trim 6 spaces, leave leading tab in line two'; isnt no-r(@q3[0]), "line one\n line two\n", 'should not contain 2 leading spaces in line two'; # Same heredoc body as the first, except moved to the right three spaces # 7 spaces are present between the beginning of the line and the heredoc body my @q4 = q:to/END/; line one line two END is no-r(@q4[0]), "line one\n\tline two\n", 'trim 7 leading spaces, leave leading tab in line two'; isnt no-r(@q4[0]), "line one\n line two\n", 'should not contain 1 leading space in line two'; # ONLY TEST THAT PASSES # Same heredoc body as the first, except moved to the right four spaces # 8 spaces are present between the beginning of the line and the heredoc body my @q5 = q:to/END/; line one line two END is no-r(@q5[0]), "line one\n\tline two\n", 'trim 8 leading spaces, leave leading tab in line two'; # Same heredoc body as the first, except moved to the right five spaces # 9 spaces are present between the beginning of the line and the heredoc body my @q6 = q:to/END/; line one line two END is no-r(@q6[0]), "line one\n\tline two\n", 'trim 9 leading spaces, leave leading tab in line two'; isnt no-r(@q6[0]), "line one\n line two\n", 'should not contain 7 leading spaces in line two'; }