| // run-pass | |
| // Make sure nested functions are separate, even if they have | |
| // equal name. | |
| // | |
| // Issue #8587 | |
| pub struct X; | |
| impl X { | |
| fn f(&self) -> isize { | |
| #[inline(never)] | |
| fn inner() -> isize { | |
| 0 | |
| } | |
| inner() | |
| } | |
| fn g(&self) -> isize { | |
| #[inline(never)] | |
| fn inner_2() -> isize { | |
| 1 | |
| } | |
| inner_2() | |
| } | |
| fn h(&self) -> isize { | |
| #[inline(never)] | |
| fn inner() -> isize { | |
| 2 | |
| } | |
| inner() | |
| } | |
| } | |
| pub fn main() { | |
| let n = X; | |
| assert_eq!(n.f(), 0); | |
| assert_eq!(n.g(), 1); | |
| // This test `h` used to fail. | |
| assert_eq!(n.h(), 2); | |
| } |