From 9559dfc74261ec22960b9d992200851007fc298d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 25 Mar 2021 18:25:11 +0000 Subject: [PATCH] PieceSpec: make count fallible Signed-off-by: Ian Jackson --- daemon/cmdlistener.rs | 2 +- src/gamestate.rs | 1 + src/shapelib.rs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 0c46a1cd..727061d1 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -635,7 +635,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( let gref = ig_g.gref.clone(); let ig = &mut **ig_g; let gs = &mut ig.gs; - let implicit: u32 = info.count(&ig.pcaliases) + let implicit: u32 = info.count(&ig.pcaliases)? .try_into().map_err( |_| SpE::InternalError(format!("implicit item count out of range")) )?; diff --git a/src/gamestate.rs b/src/gamestate.rs index 8952ee2d..1e8b2f1f 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -201,6 +201,7 @@ pub type PieceSpecLoadedOccultable = #[typetag::serde(tag="type")] pub trait PieceSpec: Debug + Sync + Send + 'static { + #[throws(SpecError)] fn count(&self, _pcaliases: &PieceAliases) -> usize { 1 } fn load(&self, i: usize, gpc: &mut GPiece, pcaliases: &PieceAliases, ir: &InstanceRef) diff --git a/src/shapelib.rs b/src/shapelib.rs index 4a6eafc9..728220c6 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -476,6 +476,7 @@ impl PieceSpec for ItemSpec { #[typetag::serde(name="LibList")] impl PieceSpec for MultiSpec { + #[throws(SpecError)] fn count(&self, _pcaliases: &PieceAliases) -> usize { self.items.len() } #[throws(SpecError)] -- 2.30.2