rewrites `expr_from` to `rewrite_to` while preserving the original qualified name by using the `NamePreserver`
(expr_from: Expr, rewrite_to: Expr)
| 554 | /// rewrites `expr_from` to `rewrite_to` while preserving the original qualified name |
| 555 | /// by using the `NamePreserver` |
| 556 | fn test_rewrite(expr_from: Expr, rewrite_to: Expr) { |
| 557 | struct TestRewriter { |
| 558 | rewrite_to: Expr, |
| 559 | } |
| 560 | |
| 561 | impl TreeNodeRewriter for TestRewriter { |
| 562 | type Node = Expr; |
| 563 | |
| 564 | fn f_up(&mut self, _: Expr) -> Result<Transformed<Expr>> { |
| 565 | Ok(Transformed::yes(self.rewrite_to.clone())) |
| 566 | } |
| 567 | } |
| 568 | |
| 569 | let mut rewriter = TestRewriter { |
| 570 | rewrite_to: rewrite_to.clone(), |
| 571 | }; |
| 572 | let saved_name = NamePreserver { use_alias: true }.save(&expr_from); |
| 573 | let new_expr = expr_from.clone().rewrite(&mut rewriter).unwrap().data; |
| 574 | let new_expr = saved_name.restore(new_expr); |
| 575 | |
| 576 | let original_name = expr_from.qualified_name(); |
| 577 | let new_name = new_expr.qualified_name(); |
| 578 | assert_eq!( |
| 579 | original_name, new_name, |
| 580 | "mismatch rewriting expr_from: {expr_from} to {rewrite_to}" |
| 581 | ) |
| 582 | } |
| 583 | } |
no test coverage detected
searching dependent graphs…