From e5a41e5682c55626e95a36fe9fa0814af5d24f6b Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Sun, 26 Aug 2018 13:19:44 +0900 Subject: [PATCH 1/3] Add a test for #2953 --- tests/target/obsolete_in_place.rs | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 tests/target/obsolete_in_place.rs diff --git a/tests/target/obsolete_in_place.rs b/tests/target/obsolete_in_place.rs new file mode 100644 index 000000000000..3f364c1aecdc --- /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); +} From 6aae9d870fcd9f30d265d3f287627ac5fbad8f4f Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Sun, 26 Aug 2018 13:20:07 +0900 Subject: [PATCH 2/3] Remove an unnecessary attribute --- src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 89dcf6f5ff38..7ebb967a494c 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)] From 78a0cde5bfb337af1812b06a73819cbb5ad61f06 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Sun, 26 Aug 2018 13:20:25 +0900 Subject: [PATCH 3/3] Format in-place expression like assignment --- src/expr.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/expr.rs b/src/expr.rs index fdea683df0a4..74639c6ef63d 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 "