Skip to content

Commit

Permalink
Auto merge of #59826 - llogiq:multi-dbg, r=SimonSapin
Browse files Browse the repository at this point in the history
allow multiple args to `dbg!(..)`

This closes #59763
  • Loading branch information
bors committed Apr 20, 2019
2 parents 4530c52 + b641fd3 commit 33fe113
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/libstd/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,22 @@ macro_rules! eprintln {
/// You can also use `dbg!()` without a value to just print the
/// file and line whenever it's reached.
///
/// Finally, if you want to `dbg!(..)` multiple values, it will treat them as
/// a tuple (and return it, too):
///
/// ```
/// assert_eq!(dbg!(1usize, 2u32), (1, 2));
/// ```
///
/// However, a single argument with a trailing comma will still not be treated
/// as a tuple, following the convention of ignoring trailing commas in macro
/// invocations. You can use a 1-tuple directly if you need one:
///
/// ```
/// assert_eq!(1, dbg!(1u32,)); // trailing comma ignored
/// assert_eq!((1,), dbg!((1u32,))); // 1-tuple
/// ```
///
/// [stderr]: https://en.wikipedia.org/wiki/Standard_streams#Standard_error_(stderr)
/// [`debug!`]: https://docs.rs/log/*/log/macro.debug.html
/// [`log`]: https://crates.io/crates/log
Expand All @@ -333,7 +349,12 @@ macro_rules! dbg {
tmp
}
}
}
};
// Trailing comma with single argument is ignored
($val:expr,) => { dbg!($val) };
($($val:expr),+ $(,)?) => {
($(dbg!($val)),+,)
};
}

/// Awaits the completion of an async call.
Expand Down
22 changes: 22 additions & 0 deletions src/test/ui/rfc-2361-dbg-macro/dbg-macro-expected-behavior.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,17 @@ fn test() {
7331
}));
assert_eq!(foo, 42);

// Test trailing comma:
assert_eq!(("Yeah",), dbg!(("Yeah",)));

// Test multiple arguments:
assert_eq!((1u8, 2u32), dbg!(1,
2));

// Test multiple arguments + trailing comma:
assert_eq!((1u8, 2u32, "Yeah"), dbg!(1u8, 2u32,
"Yeah",));
}

fn validate_stderr(stderr: Vec<String>) {
Expand Down Expand Up @@ -85,6 +96,17 @@ fn validate_stderr(stderr: Vec<String>) {

"before",
":51] { foo += 1; eprintln!(\"before\"); 7331 } = 7331",

":59] (\"Yeah\",) = (",
" \"Yeah\",",
")",

":62] 1 = 1",
":62] 2 = 2",

":66] 1u8 = 1",
":66] 2u32 = 2",
":66] \"Yeah\" = \"Yeah\"",
]);
}

Expand Down

0 comments on commit 33fe113

Please sign in to comment.