fix(app-iced): 图标守门白名单补导航族(M79 进主线后的语义错配)

M86 的 sub_24_boxes_go_through_view_at 写于 M79 之前,白名单「未列出 = 0」把
导航族四处 view 调用判成违规。实测这四处 geometry.icon = IconSize::Toolbar = 24,
view 是正确入口,故补白名单(逐文件精确计数,仍能抓「同文件多一处」),总数 8→13。
icons.rs 399 行。
This commit is contained in:
AskaEth committed 2026-11-02 13:40:21 +08:00
1 parent 1f4bc1b80d
commit 006eb6869a
1 file changed
+11 -9
+11 -9
View File
@@ -167,9 +167,7 @@ mod tests {
);
}
/// `view_at` 必须**按请求尺寸烘焙**(复审 r1 P1-2/P2-2 的守门断言)。
///
/// 两条路径的差别就是这条测试的全部意义:
/// `view_at` 必须**按请求尺寸烘焙**(复审 r1 P1-2/P2-2 的守门断言)。两条路径的差别就是全部意义:
/// - **烘焙路径**:`source(kind, 盒)` → SVG `width=盒` + 线宽 `1.5×24/盒` ⇒ 视觉恒 **1.5px**;
/// - **缩放路径**(错的那条):24 烘焙(`stroke-width="1.5"`)塞进 18 盒 ⇒ 视觉 **1.125px**。
#[test]
@@ -228,11 +226,9 @@ mod tests {
assert_ne!(first.id(), handle(IconKind::Close, CAPTION_PX).id());
}
/// **盒 ≠ `RENDER_PX`(24) 的调用点必须走 `view_at`**(复审 r1 P1-1)。
///
/// 判据 = 调用形状匹配 + **逐调用点计数**(不做「文件里出现过 view_at 就整文件放行」的短路):
/// 先剥注释,再认 `icons::view(` / `icons::view::<` / `crate::icons::view` / `super::icons::view`
/// 以及 `use …icons…view as v` / `{view, view_at}` 之后的 `v(` / `view(`;
/// **盒 ≠ `RENDER_PX`(24) 的调用点必须走 `view_at`**(复审 r1 P1-1)。判据 = 调用形状匹配 +
/// **逐调用点计数**(不做「文件里出现过 view_at 就整文件放行」的短路):先剥注释,再认
/// `icons::view(` / `icons::view::<` / `crate::`·`super::` 前缀 / `use …view as v` 的 `v(`。
/// 每个文件的计数必须**等于**白名单期望(未列出 = 0),所以「同文件改对 3 处、漏掉 1 处」也会红。
#[test]
fn sub_24_boxes_go_through_view_at() {
@@ -242,6 +238,12 @@ mod tests {
("components/inputs/menu.rs", 2),
("components/inputs/search.rs", 2),
("components/buttons/mod.rs", 1), // 24 图标 + 40 外壳
// 导航族(M79)全是 `IconSize::Toolbar = 24`,`view` 正确;本白名单写于 M79 之前,
// 「未列出 = 0」会误判它们。补进来后这几族再出现多余 `view` 仍会红。
("components/navigation/app_bar.rs", 1),
("components/navigation/drawer/item.rs", 1),
("components/navigation/list_item.rs", 2),
("components/navigation/tabs.rs", 1),
];
let root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src");
let mut views = 0usize;
@@ -265,7 +267,7 @@ mod tests {
}
}
assert!(bad.is_empty(), "图标入口用法违规:\n{}", bad.join("\n"));
assert_eq!(views, 8, "全仓 `icons::view` 调用点总数变了");
assert_eq!(views, 13, "全仓 `icons::view` 调用点总数变了");
fn sites(list: &[(&str, usize)], rel: &str) -> usize {
list.iter().find(|(p, _)| *p == rel).map_or(0, |(_, n)| *n)