toml: fix invalid bad-multiline test (#11996)

pull/11998/head
Larpon 2021-09-27 16:42:20 +02:00 committed by GitHub
parent 4e1ebca0cb
commit 2ee873d6ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 5 deletions

View File

@ -355,7 +355,7 @@ fn (mut s Scanner) extract_string() ?(string, bool) {
if s.pos >= s.text.len { if s.pos >= s.text.len {
return error(@MOD + '.' + @STRUCT + '.' + @FN + return error(@MOD + '.' + @STRUCT + '.' + @FN +
' unfinished string literal `$quote.ascii_str()` started at $start ($s.line_nr,$s.col) "${byte(s.at()).ascii_str()}" near ...${s.excerpt(s.pos, 5)}...') ' unfinished single-line string literal `$quote.ascii_str()` started at $start ($s.line_nr,$s.col) "${byte(s.at()).ascii_str()}" near ...${s.excerpt(s.pos, 5)}...')
} }
c := s.at() c := s.at()
@ -379,7 +379,14 @@ fn (mut s Scanner) extract_string() ?(string, bool) {
} }
lit += c.ascii_str() lit += c.ascii_str()
// Don't eat multiple lines in single-line mode
if lit.contains('\n') {
return error(@MOD + '.' + @STRUCT + '.' + @FN +
' unfinished single-line string literal `$quote.ascii_str()` started at $start ($s.line_nr,$s.col) "${byte(s.at()).ascii_str()}" near ...${s.excerpt(s.pos, 5)}...')
}
} }
return lit, is_multiline return lit, is_multiline
} }
@ -394,8 +401,8 @@ fn (mut s Scanner) extract_multiline_string() ?string {
start := s.pos start := s.pos
mut lit := '' mut lit := ''
util.printdbg(@MOD + '.' + @STRUCT + '.' + @FN, 'multiline `$quote.ascii_str()${s.text[s.pos + 1].ascii_str()}${s.text[ util.printdbg(@MOD + '.' + @STRUCT + '.' + @FN, 'multi-line `$quote.ascii_str()${s.text[s.pos +
s.pos + 2].ascii_str()}` string started at pos $start ($s.line_nr,$s.col) (quote type: $quote.ascii_str() / $quote)') 1].ascii_str()}${s.text[s.pos + 2].ascii_str()}` string started at pos $start ($s.line_nr,$s.col) (quote type: $quote.ascii_str() / $quote)')
s.pos += 2 s.pos += 2
s.col += 2 s.col += 2
@ -406,7 +413,7 @@ fn (mut s Scanner) extract_multiline_string() ?string {
if s.pos >= s.text.len { if s.pos >= s.text.len {
return error(@MOD + '.' + @STRUCT + '.' + @FN + return error(@MOD + '.' + @STRUCT + '.' + @FN +
' unfinished multiline string literal ($quote.ascii_str()$quote.ascii_str()$quote.ascii_str()) started at $start ($s.line_nr,$s.col) "${byte(s.at()).ascii_str()}" near ...${s.excerpt(s.pos, 5)}...') ' unfinished multi-line string literal ($quote.ascii_str()$quote.ascii_str()$quote.ascii_str()) started at $start ($s.line_nr,$s.col) "${byte(s.at()).ascii_str()}" near ...${s.excerpt(s.pos, 5)}...')
} }
c := s.at() c := s.at()

View File

@ -16,7 +16,6 @@ const (
// String // String
'string/basic-multiline-out-of-range-unicode-escape-1.toml', 'string/basic-multiline-out-of-range-unicode-escape-1.toml',
'string/basic-byte-escapes.toml', 'string/basic-byte-escapes.toml',
'string/bad-multiline.toml',
'string/multiline-escape-space.toml', 'string/multiline-escape-space.toml',
'string/bad-codepoint.toml', 'string/bad-codepoint.toml',
'string/literal-multiline-quotes-1.toml', 'string/literal-multiline-quotes-1.toml',