Files
ElyOffice/tasks/reviews/C14.9-r1.md
T

3.7 KiB
Raw Blame History

FAIL

  • reference/Ely-GPUI-Components/src/documents/document/tables.rs:83(ce4a1e9):列位置取自原始行的全部单元格,但随后网格被裁成表头宽度,合法 GFM 表格的多余单元格会让列操作越界 panic。复现:源码为 | A | B |\n| - | - |\n| 1 | 2 | 3 |\n,插入点放在 3 上,执行删除列,报 removal index (is 2) should be < len (is 2)。应在修改前核对插入点对应的有效列,对不可操作的位置明确拒绝,并覆盖超出表头宽度的行。失败探针:probe_extra_table_cell_does_not_crash,见 .work/C14.9-r1/probes-confirm.log。

  • reference/Ely-GPUI-Components/src/documents/document/tables.rs:90(ce4a1e9):嵌套表格统一用无容器前缀的文本重写,破坏外层引用结构。复现:对 > | A | B |\n> | - | - |\n> | 1 | 2 |\n 的数据行执行下方插入行,结果只有首行保留 > ,分隔行与数据行全部脱离引用,原表格不再按原结构解析,违反 §14.3 的内容保留要求。应保留引用或列表容器的逐行前缀;无法保留的结构须明确拒绝并提示用源码编辑。失败探针:probe_nested_table_stays_quoted,见 .work/C14.9-r1/probes-confirm.log。

  • apps/ely-mark/src/tools.rs:30:表格动作不检查模式,直接修改只读预览中的文档。复现:打开 Intro\n,切到预览,执行“表格›插入表格”,仍停在预览模式,正文却已加入整个表格,违反 MARK-02 的只读预览要求。应在实际修改入口落实模式限制,覆盖表格及替换等修改动作;不能在保持只读预览状态时写入正文。失败探针:probe_preview_table_is_read_only,见 .work/C14.9-r1/probes-confirm.log。

  • apps/ely-mark/src/finding.rs:147:逐次替换后沿用旧匹配序号,不能可靠地选中下一处。复现:源码 a a\n,查找 a,选中第一处并替换为 aa;结果为 aa a\n,选区仍为 0..1,而不是下一原匹配的 3..4,反复替换会不断扩张第一处。另外,替换 a b a\n 的最后一处为 x 后,当前项变成 None,没有按导航的循环规则转到第一处。应依据替换后的字节位置重新寻找下一处并处理回绕,补实际选区与连续替换回归。失败探针:probe_replace_matching_text_advances、probe_replace_last_wraps,见 .work/C14.9-r1/probes-confirm.log。

  • reference/Ely-GPUI-Components/src/documents/document/finding.rs:28(ce4a1e9):可视模式在解析尚未跟上文本时直接丢弃显示匹配的请求。应用在替换后立即调用它,此时编辑器的 Changed 回调尚未完成解析,正常的短文档也会命中此分支。复现:可视模式查找 a b a\n 的第一处 a,替换为 x;计数更新了,但下一处没有打开或选中,键入 z 后正文仍为 x b a\n,而不是 x b z\n。应将匹配显示请求保留到对应文本解析完成再落实。失败探针 probe_visual_replacement_selects_next;对照探针在解析后再次调用 show_match 即通过,见 .work/C14.9-r1/probes-confirm.log。

  • reference/Ely-GPUI-Components/src/documents/document/lists.rs:125(ce4a1e9;块内同见 159):列表续写只检查当前行的字符,不检查 Markdown 语法上下文,代码块中的普通代码也被当作列表。复现:源码为一个 text 围栏,内容为 - a;在该行末回车,实际插入 \n- ,而正常回车应只换行。代码内容因此被额外改写,违反 MARK-06 与 §14.3;可视模式打开代码块后也走同一判定。应仅对实际列表项续写,排除围栏代码等原文区域,并覆盖源码与打开块两条输入路径。失败探针:probe_code_is_not_a_list,见 .work/C14.9-r1/probes-confirm.log。