Returning a parse error instead of panicking when parsing a text change
[?]
Dec 10, 2020, 10:31 AM
73NW2X2MI767RYNTKS67ZB5QUWYEAA4SCORLD52K36ZU3JAK67AQCDependencies
- [2]
VO5OQW4WRemoving anyhow in libpijul - [3]
KJDQ2WOMFixing the parsing of section headers in the text change format - [4]
65S67T3EParsing \\ for empty additions (rare problem)
Change contents
- replacement in libpijul/src/change/text_changes.rs at line 14
#[error("Missing change [{0}]")]#[error("Missing dependency [{0}]")] - edit in libpijul/src/change/text_changes.rs at line 16
#[error("Byte position {0} from this change missing")]MissingPosition(u64), - replacement in libpijul/src/change/text_changes.rs at line 598
v.inode = parse_pos(changes, &cap[4]);v.inode = parse_pos(changes, &cap[4])?; - replacement in libpijul/src/change/text_changes.rs at line 614
v.inode = parse_pos(changes, &cap[4]);v.inode = parse_pos(changes, &cap[4])?; - replacement in libpijul/src/change/text_changes.rs at line 631
del.inode = parse_pos(changes, &cap[3]);del.inode = parse_pos(changes, &cap[3])?; - replacement in libpijul/src/change/text_changes.rs at line 645
undel.inode = parse_pos(changes, &cap[3]);undel.inode = parse_pos(changes, &cap[3])?; - replacement in libpijul/src/change/text_changes.rs at line 660
name.inode = parse_pos(changes, &cap[6]);name.inode = parse_pos(changes, &cap[6])?; - replacement in libpijul/src/change/text_changes.rs at line 695
del.inode = parse_pos(changes, cap.name("inode").unwrap().as_str());del.inode = parse_pos(changes, cap.name("inode").unwrap().as_str())?; - replacement in libpijul/src/change/text_changes.rs at line 710
add.inode = parse_pos(changes, &cap[3]);add.inode = parse_pos(changes, &cap[3])?; - replacement in libpijul/src/change/text_changes.rs at line 729
v.inode = parse_pos(changes, &cap[7]);v.inode = parse_pos(changes, &cap[7])?; - replacement in libpijul/src/change/text_changes.rs at line 739
v.inode = parse_pos(changes, &cap[7]);v.inode = parse_pos(changes, &cap[7])?; - replacement in libpijul/src/change/text_changes.rs at line 754
v.inode = parse_pos(changes, &cap.name("inode").unwrap().as_str());v.inode = parse_pos(changes, &cap.name("inode").unwrap().as_str())?; - replacement in libpijul/src/change/text_changes.rs at line 819
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 841
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 863
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 917
} else if let Some(edges) = parse_edges(changes, h) {} else if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 954
} else if let Some(edges) = parse_edges(changes, h) {} else if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 964
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 1001
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 1009
if let Some(edges) = parse_edges(changes, h) {if let Some(edges) = parse_edges(changes, h)? { - replacement in libpijul/src/change/text_changes.rs at line 1077
return Err(TextDeError::MissingChange(change));return Err(TextDeError::MissingPosition(pos)); - replacement in libpijul/src/change/text_changes.rs at line 1083
change: change_ref(changes, change),change: change_ref(changes, change)?, - replacement in libpijul/src/change/text_changes.rs at line 1090
fn change_ref(changes: &HashMap<usize, Hash>, change: usize) -> Option<Hash> {fn change_ref(changes: &HashMap<usize, Hash>, change: usize) -> Result<Option<Hash>, TextDeError> { - replacement in libpijul/src/change/text_changes.rs at line 1093
NoneOk(None) - replacement in libpijul/src/change/text_changes.rs at line 1095
Some(Hash::None)Ok(Some(Hash::None))} else if let Some(&c) = changes.get(&change) {Ok(Some(c)) - replacement in libpijul/src/change/text_changes.rs at line 1099
Some(*changes.get(&change).unwrap())Err(TextDeError::MissingChange(change)) - replacement in libpijul/src/change/text_changes.rs at line 1103
pub fn parse_pos(changes: &HashMap<usize, Hash>, s: &str) -> Position<Option<Hash>> {pub fn parse_pos(changes: &HashMap<usize, Hash>,s: &str,) -> Result<Position<Option<Hash>>, TextDeError> { - replacement in libpijul/src/change/text_changes.rs at line 1110
Position {change: change_ref(changes, change),Ok(Position {change: change_ref(changes, change)?, - replacement in libpijul/src/change/text_changes.rs at line 1113
}}) - replacement in libpijul/src/change/text_changes.rs at line 1116
pub fn parse_edges(changes: &HashMap<usize, Hash>, s: &str) -> Option<Vec<NewEdge<Option<Hash>>>> {pub fn parse_edges(changes: &HashMap<usize, Hash>,s: &str,) -> Result<Option<Vec<NewEdge<Option<Hash>>>>, TextDeError> { - replacement in libpijul/src/change/text_changes.rs at line 1137
change: change_ref(changes, change0),change: change_ref(changes, change0)?, - replacement in libpijul/src/change/text_changes.rs at line 1141
change: change_ref(changes, change1),change: change_ref(changes, change1)?, - replacement in libpijul/src/change/text_changes.rs at line 1145
introduced_by: change_ref(changes, introduced_by),introduced_by: change_ref(changes, introduced_by)?, - replacement in libpijul/src/change/text_changes.rs at line 1149
return None;return Ok(None); - replacement in libpijul/src/change/text_changes.rs at line 1152
Some(result)Ok(Some(result))