toml: fix unbalanced quoted tests (#12006)
parent
24c1d552d7
commit
d39fec3479
|
@ -22,11 +22,14 @@ pub fn (c Checker) check(n &ast.Value) ? {
|
||||||
|
|
||||||
fn (c Checker) visit(value &ast.Value) ? {
|
fn (c Checker) visit(value &ast.Value) ? {
|
||||||
match value {
|
match value {
|
||||||
|
ast.Bool {
|
||||||
|
c.check_boolean(value) ?
|
||||||
|
}
|
||||||
ast.Number {
|
ast.Number {
|
||||||
c.check_number(value) ?
|
c.check_number(value) ?
|
||||||
}
|
}
|
||||||
ast.Bool {
|
ast.Quoted {
|
||||||
c.check_boolean(value) ?
|
c.check_quoted(value) ?
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// TODO add more checks to make BurntSushi/toml-test invalid TOML pass
|
// TODO add more checks to make BurntSushi/toml-test invalid TOML pass
|
||||||
|
@ -168,3 +171,13 @@ fn (c Checker) check_boolean(b ast.Bool) ? {
|
||||||
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
||||||
' boolean values like "$lit" can only be `true` or `false` literals, not `$lit` in ...${c.excerpt(b.pos)}...')
|
' boolean values like "$lit" can only be `true` or `false` literals, not `$lit` in ...${c.excerpt(b.pos)}...')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (c Checker) check_quoted(b ast.Quoted) ? {
|
||||||
|
lit := b.text
|
||||||
|
quote := b.quote.ascii_str()
|
||||||
|
triple_quote := quote + quote + quote
|
||||||
|
if b.is_multiline && lit.ends_with(triple_quote) {
|
||||||
|
return error(@MOD + '.' + @STRUCT + '.' + @FN +
|
||||||
|
' string values like "$lit" is has unbalanced quote literals `b.quote` in ...${c.excerpt(b.pos)}...')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -18,14 +18,10 @@ const (
|
||||||
'string/basic-byte-escapes.toml',
|
'string/basic-byte-escapes.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-2.toml',
|
|
||||||
'string/multiline-quotes-1.toml',
|
|
||||||
'string/basic-multiline-out-of-range-unicode-escape-2.toml',
|
'string/basic-multiline-out-of-range-unicode-escape-2.toml',
|
||||||
'string/bad-slash-escape.toml',
|
'string/bad-slash-escape.toml',
|
||||||
'string/basic-out-of-range-unicode-escape-1.toml',
|
'string/basic-out-of-range-unicode-escape-1.toml',
|
||||||
'string/basic-out-of-range-unicode-escape-2.toml',
|
'string/basic-out-of-range-unicode-escape-2.toml',
|
||||||
'string/multiline-quotes-2.toml',
|
|
||||||
'string/bad-uni-esc.toml',
|
'string/bad-uni-esc.toml',
|
||||||
'string/bad-escape.toml',
|
'string/bad-escape.toml',
|
||||||
'string/basic-multiline-unknown-escape.toml',
|
'string/basic-multiline-unknown-escape.toml',
|
||||||
|
|
Loading…
Reference in New Issue