diff --git a/vlib/toml/scanner/scanner.v b/vlib/toml/scanner/scanner.v index 822bfe888a..7a704f98f1 100644 --- a/vlib/toml/scanner/scanner.v +++ b/vlib/toml/scanner/scanner.v @@ -486,6 +486,9 @@ fn (mut s Scanner) extract_multiline_string() !string { c := u8(s.at()) util.printdbg(@MOD + '.' + @STRUCT + '.' + @FN, 'c: `${c.ascii_str()}` / ${c} (quote type: ${quote}/${quote.ascii_str()})') + if c == `\r` { + continue + } if c == `\n` { s.inc_line_number() lit += c.ascii_str() diff --git a/vlib/toml/scanner/scanner_test.v b/vlib/toml/scanner/scanner_test.v index 8ba42cc671..f18477807c 100644 --- a/vlib/toml/scanner/scanner_test.v +++ b/vlib/toml/scanner/scanner_test.v @@ -80,3 +80,16 @@ fn test_reset() { s.reset() assert s.next() == `a` } + +const multiline_string_input = input.Config{ + text: '"""abc\r\ndef\n123"""' +} + +fn test_multiline_string() { + mut s := scanner.new_scanner(input: multiline_string_input) or { panic(err) } + tok := s.scan()! + assert tok.kind == .quoted + assert tok.lit.contains('abc') + assert tok.lit.contains('def') + assert tok.lit.contains('123') +}