mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Add test of temporaries inside format_args of core/std macros
This commit is contained in:
parent
b2eed72a6f
commit
ae29890ab6
70
src/test/ui/macros/format-args-temporaries.rs
Normal file
70
src/test/ui/macros/format-args-temporaries.rs
Normal file
@ -0,0 +1,70 @@
|
||||
// check-pass
|
||||
|
||||
use std::fmt::{self, Display};
|
||||
|
||||
struct Mutex;
|
||||
|
||||
impl Mutex {
|
||||
fn lock(&self) -> MutexGuard {
|
||||
MutexGuard(self)
|
||||
}
|
||||
}
|
||||
|
||||
struct MutexGuard<'a>(&'a Mutex);
|
||||
|
||||
impl<'a> Drop for MutexGuard<'a> {
|
||||
fn drop(&mut self) {
|
||||
// Empty but this is a necessary part of the repro. Otherwise borrow
|
||||
// checker is fine with 'a dangling at the time that MutexGuard goes out
|
||||
// of scope.
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> MutexGuard<'a> {
|
||||
fn write_fmt(&self, _args: fmt::Arguments) {}
|
||||
}
|
||||
|
||||
impl<'a> Display for MutexGuard<'a> {
|
||||
fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _write = {
|
||||
let out = Mutex;
|
||||
let mutex = Mutex;
|
||||
write!(out.lock(), "{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _writeln = {
|
||||
let out = Mutex;
|
||||
let mutex = Mutex;
|
||||
writeln!(out.lock(), "{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _print = {
|
||||
let mutex = Mutex;
|
||||
print!("{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _println = {
|
||||
let mutex = Mutex;
|
||||
println!("{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _eprint = {
|
||||
let mutex = Mutex;
|
||||
eprint!("{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _eprintln = {
|
||||
let mutex = Mutex;
|
||||
eprintln!("{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
|
||||
let _panic = {
|
||||
let mutex = Mutex;
|
||||
panic!("{}", mutex.lock()) /* no semicolon */
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user