diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index 1777d765cc8a..05bef951ddbd 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -1055,8 +1055,8 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr) { visitor.visit_expr(left_hand_expression) } ExprKind::AssignOp(_, ref left_expression, ref right_expression) => { + visitor.visit_expr(left_expression); visitor.visit_expr(right_expression); - visitor.visit_expr(left_expression) } ExprKind::Field(ref subexpression, ident) => { visitor.visit_expr(subexpression); diff --git a/src/test/run-pass/issues/issue-61442.rs b/src/test/run-pass/issues/issue-61442.rs new file mode 100644 index 000000000000..89d1dac08bc1 --- /dev/null +++ b/src/test/run-pass/issues/issue-61442.rs @@ -0,0 +1,12 @@ +#![feature(generators)] + +fn foo() { + let _x = static || { + let mut s = String::new(); + s += { yield; "" }; + }; +} + +fn main() { + foo() +}