mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-23 12:02:28 +00:00
Fix invalid multiline string output in REPL
If a PlainLine string contains a newline character, the REPL will print the string using a triple-quoted block string.
This commit is contained in:
parent
5e8faf64be
commit
1b2952bc70
2 changed files with 30 additions and 2 deletions
|
@ -476,7 +476,24 @@ pub fn fmt_str_literal<'buf>(buf: &mut Buf<'buf>, literal: StrLiteral, indent: u
|
|||
buf.push('"');
|
||||
match literal {
|
||||
PlainLine(string) => {
|
||||
buf.push_str_allow_spaces(string);
|
||||
// When a PlainLine contains "\n" it is formatted as a block string using """
|
||||
let mut lines = string.split('\n');
|
||||
match (lines.next(), lines.next()) {
|
||||
(Some(first), Some(second)) => {
|
||||
buf.push_str("\"\"");
|
||||
buf.newline();
|
||||
|
||||
for line in [first, second].into_iter().chain(lines) {
|
||||
buf.indent(indent);
|
||||
buf.push_str_allow_spaces(line);
|
||||
buf.newline();
|
||||
}
|
||||
|
||||
buf.indent(indent);
|
||||
buf.push_str("\"\"");
|
||||
}
|
||||
_ => buf.push_str_allow_spaces(string),
|
||||
}
|
||||
}
|
||||
Line(segments) => {
|
||||
for seg in segments.iter() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue