Skip to content

Commit

Permalink
Add test to demonstrate the double reference problem
Browse files Browse the repository at this point in the history
  • Loading branch information
yfcai committed May 8, 2024
1 parent e0d1698 commit 29d0592
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions tests/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,55 @@ mod structs {
}
}
}

mod unnamed_pointer {
use super::*;
use std::fmt;

#[derive(Display)]
#[display("{_0:p}")]
struct UnnamedPointer<'a>(&'a u32);

#[derive(Display)]
#[display("{}", format!("{_0:p}"))]
struct UnnamedPointerWithFormat<'a>(&'a u32);

#[derive(Pointer)]
struct UnnamedPointerDerivePointer<'a, E>(&'a E);

#[test]
fn assert_no_double_reference() {
let i: u32 = line!();
assert_eq!(
format!("{}", UnnamedPointer(&i)),
format!("{:p}", &i)
);
}

#[test]
fn assert_no_double_reference_with_format() {
let i: u32 = line!();
assert_eq!(
format!("{}", UnnamedPointerWithFormat(&i)),
format!("{:p}", &i)
);
}

#[test]
fn assert_no_double_reference_deriving_pointer() {
let i: u32 = line!();
let j: &u32 = &i;
let k: &&u32 = &j;
assert_eq!(
format!("{:p}", UnnamedPointerDerivePointer(j)),
format!("{:p}", j)
);
assert_eq!(
format!("{:p}", UnnamedPointerDerivePointer(k)),
format!("{:p}", k)
);
}
}
}

mod enums {
Expand Down

0 comments on commit 29d0592

Please sign in to comment.