From 50cfad32ed4fe77ebe8abc9ad3d86132b9cfd21f Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Tue, 15 Sep 2026 20:29:52 +0000 Subject: [PATCH] =?UTF-8?q?test:=20BuiltinId::ALL=20=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E5=8A=A0=E7=BC=96=E8=AF=91=E6=9C=9F=E6=96=AD=E8=A8=80=E9=92=89?= =?UTF-8?q?=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_kernel/src/kernel.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/oxide_kernel/src/kernel.rs b/crates/oxide_kernel/src/kernel.rs index ec5cddc1..ed956a28 100644 --- a/crates/oxide_kernel/src/kernel.rs +++ b/crates/oxide_kernel/src/kernel.rs @@ -526,6 +526,18 @@ impl BuiltinId { ]; } +// 顺序钉:ALL 与判别值 0..NUM_BUILTINS 严格同序(无换序、无重复、无遗漏); +// 错位即快照/脏检查按下标误读,钉成编译失败。 +const _: () = { + let mut i = 0; + while i < BuiltinId::ALL.len() { + if BuiltinId::ALL[i] as usize != i { + panic!("BuiltinId::ALL 顺序与判别值不一致"); + } + i += 1; + } +}; + /// 内置对象世代(generation)快照:记录构造时各对象及其 stub 的世代号与数量。 /// /// 供 [`KernelSession::dirty_since_snapshot`] 对比,判断哪些 builtin 家族在运行期被污染。