| //@ build-pass |
| #![warn(clashing_extern_declarations)] |
| |
| #[repr(C)] |
| pub struct A { |
| a: [u16; 4], |
| } |
| #[repr(C)] |
| pub struct B { |
| b: [u32; 4], |
| } |
| |
| pub mod a { |
| extern "C" { |
| pub fn foo(_: super::A); |
| } |
| } |
| pub mod b { |
| extern "C" { |
| pub fn foo(_: super::B); |
| //~^ WARN `foo` redeclared with a different signature |
| } |
| } |
| |
| #[repr(C)] |
| pub struct G<T> { |
| g: [T; 4], |
| } |
| |
| pub mod x { |
| extern "C" { |
| pub fn bar(_: super::G<u16>); |
| } |
| } |
| pub mod y { |
| extern "C" { |
| pub fn bar(_: super::G<u32>); |
| //~^ WARN `bar` redeclared with a different signature |
| } |
| } |
| |
| fn main() {} |