diff --git a/crates/tests/standalone/build.rs b/crates/tests/standalone/build.rs index 82dbacf9f4..1794f84e19 100644 --- a/crates/tests/standalone/build.rs +++ b/crates/tests/standalone/build.rs @@ -135,6 +135,13 @@ fn main() { "Windows.Win32.Security.Cryptography.CMC_ADD_ATTRIBUTES", ], ); + + // Ensure that no-inner-attribute works, and the resulting + // file can be `include!` inside a mod{} block. + write_no_inner_attr( + "src/b_include_me.rs", + &["Windows.Win32.System.SystemInformation.GetVersion"], + ); } fn write_sys(output: &str, filter: &[&str]) { @@ -149,6 +156,10 @@ fn write_std(output: &str, filter: &[&str]) { riddle(output, filter, &["flatten", "std", "minimal"]); } +fn write_no_inner_attr(output: &str, filter: &[&str]) { + riddle(output, filter, &["flatten", "no-inner-attributes", "minimal"]); +} + fn riddle(output: &str, filter: &[&str], config: &[&str]) { std::fs::remove_file(output).expect("Failed to delete output"); diff --git a/crates/tests/standalone/src/b_include_me.rs b/crates/tests/standalone/src/b_include_me.rs new file mode 100644 index 0000000000..4414d7af42 --- /dev/null +++ b/crates/tests/standalone/src/b_include_me.rs @@ -0,0 +1,7 @@ +// Bindings generated by `windows-bindgen` 0.52.0 + +#[inline] +pub unsafe fn GetVersion() -> u32 { + ::windows_targets::link!("kernel32.dll" "system" fn GetVersion() -> u32); + GetVersion() +} diff --git a/crates/tests/standalone/src/lib.rs b/crates/tests/standalone/src/lib.rs index 90c9d4e1a3..dbe58b79ab 100644 --- a/crates/tests/standalone/src/lib.rs +++ b/crates/tests/standalone/src/lib.rs @@ -26,6 +26,10 @@ mod b_test; mod b_unknown; mod b_uri; mod b_win_enumerator; +#[allow(non_snake_case)] +mod included { + include!("b_include_me.rs"); +} #[test] fn bstr() { @@ -166,3 +170,10 @@ fn calendar() -> windows_core::Result<()> { calendar.SetYear(year)?; Ok(()) } + +#[test] +fn from_included() { + unsafe { + included::GetVersion(); + } +}