]> git.lizzy.rs Git - rust.git/commitdiff
format_args: handle key-value arguments
authorJonas Schievink <jonasschievink@gmail.com>
Thu, 10 Dec 2020 12:46:47 +0000 (13:46 +0100)
committerJonas Schievink <jonasschievink@gmail.com>
Thu, 10 Dec 2020 12:46:47 +0000 (13:46 +0100)
crates/hir_expand/src/builtin_macro.rs

index f60666a54ab7cddeb526f91dff56ad48665ac277..477192a09cd8489f63af402fbbb0cfcdeb53e98e 100644 (file)
@@ -245,6 +245,12 @@ fn format_args_expand(
     if args.is_empty() {
         return ExpandResult::only_err(mbe::ExpandError::NoMatchingRule);
     }
+    for arg in &mut args {
+        // Remove `key =`.
+        if matches!(arg.get(1), Some(tt::TokenTree::Leaf(tt::Leaf::Punct(p))) if p.char == '=') {
+            arg.drain(..2);
+        }
+    }
     let _format_string = args.remove(0);
     let arg_tts = args.into_iter().flat_map(|arg| {
         quote! { std::fmt::ArgumentV1::new(&(##arg), std::fmt::Display::fmt), }