Skip to content

Commit 61c9a40

Browse files
authored
[Bugfix] add_stage now checks Stage existence (#1346)
add_stage now checks stage existence
1 parent 57f9ac1 commit 61c9a40

File tree

1 file changed

+12
-11
lines changed
  • crates/bevy_ecs/src/schedule

1 file changed

+12
-11
lines changed

crates/bevy_ecs/src/schedule/mod.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,14 @@ impl Schedule {
5858

5959
pub fn add_stage<S: Stage>(&mut self, name: &str, stage: S) -> &mut Self {
6060
self.stage_order.push(name.to_string());
61-
self.stages.insert(name.to_string(), Box::new(stage));
61+
let prev = self.stages.insert(name.to_string(), Box::new(stage));
62+
if prev.is_some() {
63+
panic!("Stage already exists: {}.", name);
64+
}
6265
self
6366
}
6467

6568
pub fn add_stage_after<S: Stage>(&mut self, target: &str, name: &str, stage: S) -> &mut Self {
66-
if self.stages.get(name).is_some() {
67-
panic!("Stage already exists: {}.", name);
68-
}
69-
7069
let target_index = self
7170
.stage_order
7271
.iter()
@@ -75,16 +74,15 @@ impl Schedule {
7574
.map(|(i, _)| i)
7675
.unwrap_or_else(|| panic!("Target stage does not exist: {}.", target));
7776

78-
self.stages.insert(name.to_string(), Box::new(stage));
7977
self.stage_order.insert(target_index + 1, name.to_string());
78+
let prev = self.stages.insert(name.to_string(), Box::new(stage));
79+
if prev.is_some() {
80+
panic!("Stage already exists: {}.", name);
81+
}
8082
self
8183
}
8284

8385
pub fn add_stage_before<S: Stage>(&mut self, target: &str, name: &str, stage: S) -> &mut Self {
84-
if self.stages.get(name).is_some() {
85-
panic!("Stage already exists: {}.", name);
86-
}
87-
8886
let target_index = self
8987
.stage_order
9088
.iter()
@@ -93,8 +91,11 @@ impl Schedule {
9391
.map(|(i, _)| i)
9492
.unwrap_or_else(|| panic!("Target stage does not exist: {}.", target));
9593

96-
self.stages.insert(name.to_string(), Box::new(stage));
9794
self.stage_order.insert(target_index, name.to_string());
95+
let prev = self.stages.insert(name.to_string(), Box::new(stage));
96+
if prev.is_some() {
97+
panic!("Stage already exists: {}.", name);
98+
}
9899
self
99100
}
100101

0 commit comments

Comments
 (0)