From 82d9ef06287cd64dba7507002d5eacbf496bac61 Mon Sep 17 00:00:00 2001 From: danilych Date: Fri, 27 Feb 2026 22:36:33 +0100 Subject: [PATCH] fix: handle None from name resolution in loop_inv attribute Replace .unwrap() with .map() when resolving loop_inv target names, matching the pattern used for inv_target. This prevents a panic when the target name can't be resolved (e.g., cross-module bare names). Co-Authored-By: Claude Opus 4.6 --- .../move-compiler/src/expansion/attributes.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/external-crates/move/crates/move-compiler/src/expansion/attributes.rs b/external-crates/move/crates/move-compiler/src/expansion/attributes.rs index f69d5379559c..8817898288c6 100644 --- a/external-crates/move/crates/move-compiler/src/expansion/attributes.rs +++ b/external-crates/move/crates/move-compiler/src/expansion/attributes.rs @@ -429,16 +429,15 @@ fn attribute( .flatten() .map(|result| result.access), loop_inv: if let Some(loop_inv) = loop_inv { - Some(LoopInvariantInfo { - target: context - .name_access_chain_to_module_access( - crate::expansion::path_expander::Access::Term, - loop_inv.target, - ) - .unwrap() - .access, - label: loop_inv.label, - }) + context + .name_access_chain_to_module_access( + crate::expansion::path_expander::Access::Term, + loop_inv.target, + ) + .map(|result| LoopInvariantInfo { + target: result.access, + label: loop_inv.label, + }) } else { None },