chiark / gitweb /
PieceSpec: make count fallible
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 25 Mar 2021 18:25:11 +0000 (18:25 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 25 Mar 2021 19:19:01 +0000 (19:19 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs
src/gamestate.rs
src/shapelib.rs

index 0c46a1cd18e85f22c0611a3a003e376d04f3abbf..727061d1e9f383fe505d67e71f75b8c3dac114d0 100644 (file)
@@ -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"))
         )?;
index 8952ee2df94feb6afad6a2e51df9b06fa83d0df2..1e8b2f1f47820d8793f2cc85941de569f15f783d 100644 (file)
@@ -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)
index 4a6eafc974a658382bc8b6fac3615a6da5752d16..728220c61fdc8a1e37582b4f1682d68a48c35229 100644 (file)
@@ -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)]