fix(tomllib): 单引号处误用双引号字符串,改为字符字面量

char 形参与 char 比较位置写成「双引号包单引号」(实为 i8* 字符串):形参处报 CastError(implicit pointer-to-integer),比较处被 C 哨兵规则静默 ptrtoint 成恒假(TOML 单引号字面量字符串根本解析不出来)。7 处统一改成字符字面量,与 lexer.vp 同款写法一致。
This commit is contained in:
TermiNexus committed 2026-10-08 20:03:34 +08:00
1 parent 76deaa27bf
commit 788c52b749
1 file changed
+7 -7
+7 -7
View File
@@ -224,10 +224,10 @@ def _parse_basic_string(s: TomlState*) -> str:
# Literal string '...': taken verbatim, no escapes.
def _parse_literal_string(s: TomlState*) -> str:
if _peek(s) != "'": return None
if _peek(s) != '\'': return None
_advance(s)
start: sizet = s.pos
while s.pos < s.len and s.src[s.pos] != "'":
while s.pos < s.len and s.src[s.pos] != '\'':
if _is_newline(s.src[s.pos]): return None
s.pos += 1
if s.pos >= s.len: return None
@@ -276,7 +276,7 @@ def _parse_multiline_literal(s: TomlState*) -> str:
if _peek(s) == '\n': s.pos += 1
start: sizet = s.pos
while s.pos < s.len:
if s.src[s.pos] == "'" and s.pos + 2 < s.len and s.src[s.pos + 1] == "'" and s.src[s.pos + 2] == "'":
if s.src[s.pos] == '\'' and s.pos + 2 < s.len and s.src[s.pos + 1] == '\'' and s.src[s.pos + 2] == '\'':
n: sizet = s.pos - start
s.pos += 3
return _copy_span(s.pool, s.src, start, n)
@@ -440,9 +440,9 @@ def _parse_value(s: TomlState*) -> JsonValue*:
else: sv = _parse_basic_string(s)
if sv == None: return None
return string_val(s.pool, sv)
if ch == "'":
if ch == '\'':
sv2: str = None
if _is_multiline_open(s, "'") != 0: sv2 = _parse_multiline_literal(s)
if _is_multiline_open(s, '\'') != 0: sv2 = _parse_multiline_literal(s)
else: sv2 = _parse_literal_string(s)
if sv2 == None: return None
return string_val(s.pool, sv2)
@@ -468,8 +468,8 @@ def _parse_key_segment(s: TomlState*) -> str:
if ch == '"':
if _is_multiline_open(s, '"') != 0: return None
return _parse_basic_string(s)
if ch == "'":
if _is_multiline_open(s, "'") != 0: return None
if ch == '\'':
if _is_multiline_open(s, '\'') != 0: return None
return _parse_literal_string(s)
if not _is_bare_key_char(ch): return None
start: sizet = s.pos