0.27.0中错误的恢复回归:一个单一的嵌入对象会将整个文档倒塌为 “ ERROR” 根

作者: Xophmeister创建于 2026年9月1日更新于 2026年9月6日
标签c-libraryerror-recovery

AI政策

  • 我读过AI政策 这个问题符合它。

问题

在0.27.0中,被嵌入错误的输入(如:JSON QQ"a":{"b""c"}}")对根文档将"ERROR"分解为". 在0.26.10中,同一输入给出了 " 文档 > 对象 > 成对 > 对象 > ERROR " ;即仅限于内在对象。 它看起来像是"巢"的触发:平""b""c""}"保持"文件"根"(虽然0.2.0会失去"对象"节点")","[1,2,3,4]"也是如此.

与此相次,恢复恢复在转出引号边界上进行法征,因此,Q、和`: ' 被吸收到字符串符号中,此后的每个字节范围都是错的。

一只双虫显示869638f6是第一个坏事,它本身就是一个固定;所以它可能不应该被偶然地还原. 我用"git return -- 不承诺869638f6"和"0.27.0"来证实这一点,后者恢复了相同的0.26.12 sexpr.

AI披露:我用Claude 密码来节制这个并构建复制;我验证了节食结果和回放。

  • 复制步骤

与Rust: (美国英语).

时间轴: [依 树保姆="=0.27.0"#或"=0.26.12" 树保姆-json = "0.24.8"


```2ZZ
使用树型: paerser;

fn 主( ) {
让src=r#"{"a":"{"b""C"}}"#;
让 mut 解析器 = 解析器: : new ();
parser. set language ( & tree  sitter json:: LANGUAGE.into ()). unwrap (); ;
让树 = parse( src, no). unwrap();
println ("root: {}"), 树. root  node (. kind ()) ;
println! ("sexp: {}"), 树.root node (.to sexp ());
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

预期行为

作为 " 公司 " 试验案例,0.26.12行为是:

==================================
成对嵌入的不规则对象
==================================

{"a": {"b"""c" }}{"a":"{""{".

-- -- . . .

(文档
(目标
(法语)
键:(字符串(字符串 内容))
值:(对象)
(弦(弦-内容))(弦-内容))

也就是说,错误仅限于内在对象:

根: 文档
sitchp: (文档(对象(pair key: (字符串(字符串-内容))) 值:(对象(字符串(字符串-内容))(字符串-内容))))

在0.27.0中,整个文件变成了`错误':

根: 错误
sitchp:(字符串(字符串 内容))(字符串(字符串 内容))(UNEXPEECD'c") (字符串 内容)

QQ 敲接效应:托肯边界变换

在树形外,0.27.0中的恢复恢复了以转动的引号边界来进行法克,因此,结构QQ和`、'被吸收成字符串符号。 ============================================================================================== (======================================================================================================================== (================= (=====================

出错 [0.33] "出错":"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错"出错".
{ [0.1] "{"
字符串 [1. 6] "\" 1"
: [6.7] ":"
{[7.8]"{".
出错 [8. 31] "\" bar\" "baz\" ],"2\":"\"bar"
字符串 [8. 13] "\" bar\"
" [14. 15] (中文(简体) ).
错误[15.18]"巴兹"
字符串 [18. 22] "\" }\" < -- *和`,' 被吞入字符串
字符串 内容 [19. 21] "}",
错误 [22.25] "二"
字符串 [25. 28] "\":\" <-`:`被吞入字符串中'
错误 [28.31] "栏"
" (中文(简体) ).
. . . . . . .

内容来源: tree-sitter/tree-sitter