Skip to content

Commit 638a094

Browse files
authored
Merge pull request #646 from Veykril/veykril/push-vulksuymvxot
Remove panicking paths from `maybe_changed_after`
2 parents 38ddd63 + 1b51d4d commit 638a094

File tree

11 files changed

+28
-68
lines changed

11 files changed

+28
-68
lines changed

src/accumulator.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,7 @@ impl<A: Accumulator> Ingredient for IngredientImpl<A> {
101101
self.index
102102
}
103103

104-
fn maybe_changed_after(
105-
&self,
106-
_db: &dyn Database,
107-
_input: Option<Id>,
108-
_revision: Revision,
109-
) -> bool {
104+
fn maybe_changed_after(&self, _db: &dyn Database, _input: Id, _revision: Revision) -> bool {
110105
panic!("nothing should ever depend on an accumulator directly")
111106
}
112107

src/function.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,15 +189,9 @@ where
189189
self.index
190190
}
191191

192-
fn maybe_changed_after(
193-
&self,
194-
db: &dyn Database,
195-
input: Option<Id>,
196-
revision: Revision,
197-
) -> bool {
198-
let key = input.unwrap();
192+
fn maybe_changed_after(&self, db: &dyn Database, input: Id, revision: Revision) -> bool {
199193
let db = db.as_view::<C::DbView>();
200-
self.maybe_changed_after(db, key, revision)
194+
self.maybe_changed_after(db, input, revision)
201195
}
202196

203197
fn cycle_recovery_strategy(&self) -> CycleRecoveryStrategy {

src/ingredient.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ pub trait Ingredient: Any + std::fmt::Debug + Send + Sync {
5959
fn maybe_changed_after<'db>(
6060
&'db self,
6161
db: &'db dyn Database,
62-
input: Option<Id>,
62+
input: Id,
6363
revision: Revision,
6464
) -> bool;
6565

src/input.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,7 @@ impl<C: Configuration> Ingredient for IngredientImpl<C> {
214214
self.ingredient_index
215215
}
216216

217-
fn maybe_changed_after(
218-
&self,
219-
_db: &dyn Database,
220-
_input: Option<Id>,
221-
_revision: Revision,
222-
) -> bool {
217+
fn maybe_changed_after(&self, _db: &dyn Database, _input: Id, _revision: Revision) -> bool {
223218
// Input ingredients are just a counter, they store no data, they are immortal.
224219
// Their *fields* are stored in function ingredients elsewhere.
225220
false

src/input/input_field.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,8 @@ where
4949
CycleRecoveryStrategy::Panic
5050
}
5151

52-
fn maybe_changed_after(
53-
&self,
54-
db: &dyn Database,
55-
input: Option<Id>,
56-
revision: Revision,
57-
) -> bool {
52+
fn maybe_changed_after(&self, db: &dyn Database, input: Id, revision: Revision) -> bool {
5853
let zalsa = db.zalsa();
59-
let input = input.unwrap();
6054
let value = <IngredientImpl<C>>::data(zalsa, input);
6155
value.stamps[self.field_index].changed_at > revision
6256
}

src/interned.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,7 @@ where
220220
self.ingredient_index
221221
}
222222

223-
fn maybe_changed_after(
224-
&self,
225-
_db: &dyn Database,
226-
_input: Option<Id>,
227-
revision: Revision,
228-
) -> bool {
223+
fn maybe_changed_after(&self, _db: &dyn Database, _input: Id, revision: Revision) -> bool {
229224
revision < self.reset_at
230225
}
231226

src/key.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,14 @@ impl InputDependencyIndex {
8787
db: &dyn Database,
8888
last_verified_at: crate::Revision,
8989
) -> bool {
90-
db.zalsa()
91-
.lookup_ingredient(self.ingredient_index)
92-
.maybe_changed_after(db, self.key_index, last_verified_at)
90+
match self.key_index {
91+
Some(key_index) => db
92+
.zalsa()
93+
.lookup_ingredient(self.ingredient_index)
94+
.maybe_changed_after(db, key_index, last_verified_at),
95+
// Data in tables themselves remain valid until the table as a whole is reset.
96+
None => false,
97+
}
9398
}
9499

95100
pub fn set_key_index(&mut self, key_index: Id) {

src/tracked_struct.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -577,12 +577,7 @@ where
577577
self.ingredient_index
578578
}
579579

580-
fn maybe_changed_after(
581-
&self,
582-
_db: &dyn Database,
583-
_input: Option<Id>,
584-
_revision: Revision,
585-
) -> bool {
580+
fn maybe_changed_after(&self, _db: &dyn Database, _input: Id, _revision: Revision) -> bool {
586581
false
587582
}
588583

src/tracked_struct/tracked_field.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,11 @@ where
5151
fn maybe_changed_after<'db>(
5252
&'db self,
5353
db: &'db dyn Database,
54-
input: Option<Id>,
54+
input: Id,
5555
revision: crate::Revision,
5656
) -> bool {
5757
let zalsa = db.zalsa();
58-
let id = input.unwrap();
59-
let data = <super::IngredientImpl<C>>::data(zalsa.table(), id);
58+
let data = <super::IngredientImpl<C>>::data(zalsa.table(), input);
6059
let field_changed_at = data.revisions[self.field_index];
6160
field_changed_at > revision
6261
}

src/zalsa.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ impl JarAux for JarAuxImpl<'_> {
329329
memo_ingredients
330330
} else {
331331
memo_ingredients.resize_with(idx + 1, Vec::new);
332-
memo_ingredients.get_mut(idx).unwrap()
332+
&mut memo_ingredients[idx]
333333
};
334334
let mi = MemoIngredientIndex(u32::try_from(memo_ingredients.len()).unwrap());
335335
memo_ingredients.push(ingredient_index);

0 commit comments

Comments
 (0)