diff --git a/.github/workflows/guards.yml b/.github/workflows/guards.yml index e2109ed..1f08c31 100644 --- a/.github/workflows/guards.yml +++ b/.github/workflows/guards.yml @@ -62,9 +62,13 @@ jobs: # 与 core-no-ui 的整文件 grep 不同:本 crate 的 description 合法地写着 # 「Slint 版与 iced 版共用」,整文件 grep 会把它当越线。所以先按表头切出依赖表 # (含 target.*.dependencies 与 dev/build 表),再去掉注释行,只查键名。 + # 子表写法 `[dependencies.slint]` / `[target.'cfg(windows)'.dependencies.slint]` + # 是合法的等长写法,且表头本身带着包名,所以表头也要一并落进检查范围—— + # 否则「子表 + optional + 非默认 feature」这种组合能同时骗过依赖表与 cargo tree。 awk ' /^[[:space:]]*\[/ { - in_deps = ($0 ~ /^[[:space:]]*\[(target\..*\.)?(dependencies|dev-dependencies|build-dependencies)\][[:space:]]*$/) + in_deps = ($0 ~ /^[[:space:]]*\[(target\..*\.)?(dependencies|dev-dependencies|build-dependencies)(\.[^]]*)?\][[:space:]]*$/) + if (in_deps && $0 ~ /\.[^]]*\]/) printf "%d:%s\n", NR, $0 next } in_deps && !/^[[:space:]]*#/ && !/^[[:space:]]*$/ { printf "%d:%s\n", NR, $0 }