diff --git a/src/expr.rs b/src/expr.rs index fdea683df0a..74639c6ef63 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -338,8 +338,10 @@ pub fn format_expr( )) } } - // FIXME(#2743) - ast::ExprKind::ObsoleteInPlace(..) => unimplemented!(), + ast::ExprKind::ObsoleteInPlace(ref lhs, ref rhs) => lhs + .rewrite(context, shape) + .map(|s| s + " <-") + .and_then(|lhs| rewrite_assign_rhs(context, lhs, &**rhs, shape)), ast::ExprKind::Async(capture_by, _node_id, ref block) => { let mover = if capture_by == ast::CaptureBy::Value { "move " diff --git a/src/lib.rs b/src/lib.rs index 89dcf6f5ff3..7ebb967a494 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,6 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![feature(tool_attributes)] #![feature(decl_macro)] #![allow(unused_attributes)] #![feature(type_ascription)] diff --git a/tests/target/obsolete_in_place.rs b/tests/target/obsolete_in_place.rs new file mode 100644 index 00000000000..3f364c1aecd --- /dev/null +++ b/tests/target/obsolete_in_place.rs @@ -0,0 +1,9 @@ +// #2953 + +macro_rules! demo { + ($a:ident <- $b:expr) => {}; +} + +fn main() { + demo!(i <- 0); +}