Skip to content

Commit e5fb5db

Browse files
committed
Simplify code
Signed-off-by: Sean Young <[email protected]>
1 parent 4286373 commit e5fb5db

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

Diff for: irp/src/build_dfa.rs

+16-16
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ impl<'a> Builder<'a> {
146146
fn path_length(&self, path: &[Path]) -> Option<Rc<Expression>> {
147147
let mut len: Option<Rc<Expression>> = None;
148148

149-
let mut vars: HashMap<String, Rc<Expression>> = HashMap::new();
149+
let mut vars: HashMap<&str, Rc<Expression>> = HashMap::new();
150150

151151
for elem in path {
152152
for action in self.nfa.verts[elem.from].edges[elem.edge_no]
@@ -156,11 +156,7 @@ impl<'a> Builder<'a> {
156156
{
157157
match action {
158158
Action::Gap { length, .. } | Action::Flash { length, .. } => {
159-
let length = if let Expression::Identifier(id) = length.as_ref() {
160-
vars.get(id).unwrap_or(length).clone()
161-
} else {
162-
length.clone()
163-
};
159+
let length = replace_vars(length, &vars);
164160

165161
if let Some(prev) = len {
166162
if let (Expression::Number(left), Expression::Number(right)) =
@@ -176,17 +172,9 @@ impl<'a> Builder<'a> {
176172
}
177173
}
178174
Action::Set { var, expr } => {
179-
let expr = clone_filter(expr, &|e| {
180-
if let Expression::Identifier(id) = e.as_ref() {
181-
if let Some(expr) = vars.get(id) {
182-
return Some(expr.clone());
183-
}
184-
}
185-
None
186-
})
187-
.unwrap_or(expr.clone());
175+
let expr = replace_vars(expr, &vars);
188176

189-
vars.insert(var.to_owned(), expr);
177+
vars.insert(var, expr);
190178
}
191179
_ => (),
192180
}
@@ -314,3 +302,15 @@ impl<'a> Builder<'a> {
314302
node
315303
}
316304
}
305+
306+
fn replace_vars(expr: &Rc<Expression>, vars: &HashMap<&str, Rc<Expression>>) -> Rc<Expression> {
307+
clone_filter(expr, &|e| {
308+
if let Expression::Identifier(id) = e.as_ref() {
309+
if let Some(expr) = vars.get(&id.as_str()) {
310+
return Some(expr.clone());
311+
}
312+
}
313+
None
314+
})
315+
.unwrap_or(expr.clone())
316+
}

0 commit comments

Comments
 (0)