chiark / gitweb /
shapelib: Introduce and use LLE::InGroup
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 11 May 2022 22:08:25 +0000 (23:08 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 11 May 2022 23:19:17 +0000 (00:19 +0100)
Otherwise bundle errors are really quite inscrutable.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs

index a1317daff2cd9ec4515ddc52275e6aaa19e95fdd..ea31e6fe21a95a237004a5ec949753c81936e546 100644 (file)
@@ -136,6 +136,9 @@ pub enum LibraryLoadError {
   #[error("bad item name (invalid characters) in {0:?}")] BadItemName(String),
   #[error("{0:?}")] MaterialsFormatVersionError(#[from] MFVE),
 
+  #[error("group {group}: {error}")]
+  InGroup { group: String, error: Box<LLE> },
+
   #[error("library {lib}: {error}")]
   InLibrary { lib: String, error: Box<LLE> },
 }
@@ -887,6 +890,8 @@ pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource)
     .get("group").unwrap_or(&empty_table)
     .as_table().ok_or_else(|| LLE::ExpectedTable(format!("group")))?;
   for (groupname, gdefn) in groups {
+    (||{
+
     let gdefn = resolve_inherit(INHERIT_DEPTH_LIMIT,
                                 groups, groupname, gdefn)?;
     let gdefn: GroupDefn = TV::Table(gdefn.into_owned()).try_into()?;
@@ -1032,12 +1037,19 @@ pub fn load_catalogue(libname: &str, src: &mut dyn LibrarySource)
 
       }
     }
+      
+    Ok(())
+    })().map_err(|error| LLE::InGroup {
+      group: groupname.to_string(),
+      error: Box::new(error),
+    })?
   }
 
   Ok(l)
-  })().map_err(
-    |error| LLE::InLibrary { lib: libname.into(), error: Box::new(error) }
-  )?
+  })().map_err(|error| LLE::InLibrary {
+    lib: libname.into(),
+    error: Box::new(error),
+  })?
 }
 
 //---------- reading, support functions ----------