toml: solidify single-line escape validation (#12644)
parent
adddac4807
commit
7d0a36dd08
|
@ -437,17 +437,24 @@ fn (c Checker) check_quoted_escapes(q ast.Quoted) ? {
|
||||||
escape := ch_byte.ascii_str() + next_ch.ascii_str()
|
escape := ch_byte.ascii_str() + next_ch.ascii_str()
|
||||||
if is_basic {
|
if is_basic {
|
||||||
if q.is_multiline {
|
if q.is_multiline {
|
||||||
if next_ch == byte(32) {
|
if next_ch == ` ` {
|
||||||
if s.peek(1) == byte(92) {
|
|
||||||
st := s.state()
|
|
||||||
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
|
||||||
' can not escape whitespaces before escapes in multi-line strings (`\\ \\`) at `$escape` ($st.line_nr,$st.col) in ...${c.excerpt(q.pos)}...')
|
|
||||||
}
|
|
||||||
if !contains_newlines {
|
if !contains_newlines {
|
||||||
st := s.state()
|
st := s.state()
|
||||||
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
||||||
' can not escape whitespaces in multi-line strings (`\\ `) at `$escape` ($st.line_nr,$st.col) in ...${c.excerpt(q.pos)}...')
|
' can not escape whitespaces in multi-line strings (`\\ `) at `$escape` ($st.line_nr,$st.col) in ...${c.excerpt(q.pos)}...')
|
||||||
}
|
}
|
||||||
|
// Rest of line must only be space chars from this point on
|
||||||
|
for {
|
||||||
|
ch_ := s.next()
|
||||||
|
if ch_ == scanner.end_of_text || ch_ == `\n` {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if !(ch_ == ` ` || ch_ == `\t`) {
|
||||||
|
st := s.state()
|
||||||
|
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
||||||
|
' invalid character `${byte(ch_).ascii_str()}` after `$escape` at ($st.line_nr,$st.col) in ...${c.excerpt(q.pos)}...')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if next_ch in [`\t`, `\n`, ` `] {
|
if next_ch in [`\t`, `\n`, ` `] {
|
||||||
s.next()
|
s.next()
|
||||||
|
|
|
@ -14,9 +14,7 @@ const (
|
||||||
'valid/example-v0.4.0.toml',
|
'valid/example-v0.4.0.toml',
|
||||||
'valid/datetime-truncate.toml', // Not considered valid since RFC 3339 doesn't permit > 6 ms digits ??
|
'valid/datetime-truncate.toml', // Not considered valid since RFC 3339 doesn't permit > 6 ms digits ??
|
||||||
]
|
]
|
||||||
invalid_exceptions = [
|
invalid_exceptions = []string{}
|
||||||
'invalid/string-bad-line-ending-escape.toml',
|
|
||||||
]
|
|
||||||
|
|
||||||
valid_value_exceptions = [
|
valid_value_exceptions = [
|
||||||
// These have correct values, and should've passed, but the format of arrays is *mixed* in the JSON ??
|
// These have correct values, and should've passed, but the format of arrays is *mixed* in the JSON ??
|
||||||
|
|
Loading…
Reference in New Issue