Skip to content

Commit ff6f56d

Browse files
authored
Move VARIANT support to the windows crate (#3282)
1 parent ddb8c83 commit ff6f56d

File tree

180 files changed

+20492
-14692
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+20492
-14692
lines changed

crates/libs/bindgen/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ where
8585
let output = canonicalize(output)?;
8686

8787
let input = read_input(&input)?;
88-
let reader = metadata::Reader::filter(input, &include, &exclude, &config);
88+
let reader = metadata::Reader::filter(input, &include, &exclude);
8989

9090
match extension(&output) {
9191
"rs" => rust::from_reader(reader, config, &output)?,

crates/libs/bindgen/src/metadata.rs

+1-7
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,6 @@ pub fn type_is_borrowed(ty: &Type) -> bool {
465465
match ty {
466466
Type::TypeDef(row, _) => !type_def_is_blittable(*row),
467467
Type::Name(TypeName::BSTR)
468-
| Type::Name(TypeName::VARIANT)
469-
| Type::Name(TypeName::PROPVARIANT)
470468
| Type::Const(TypeName::PSTR)
471469
| Type::Const(TypeName::PWSTR)
472470
| Type::Object
@@ -590,8 +588,6 @@ pub fn type_is_blittable(ty: &Type) -> bool {
590588
Type::TypeDef(row, _) => type_def_is_blittable(*row),
591589
Type::String
592590
| Type::Name(TypeName::BSTR)
593-
| Type::Name(TypeName::VARIANT)
594-
| Type::Name(TypeName::PROPVARIANT)
595591
| Type::Object
596592
| Type::Name(TypeName::IUnknown)
597593
| Type::GenericParam(_) => false,
@@ -606,8 +602,6 @@ fn type_is_copyable(ty: &Type) -> bool {
606602
Type::TypeDef(row, _) => type_def_is_copyable(*row),
607603
Type::String
608604
| Type::Name(TypeName::BSTR)
609-
| Type::Name(TypeName::VARIANT)
610-
| Type::Name(TypeName::PROPVARIANT)
611605
| Type::Object
612606
| Type::Name(TypeName::IUnknown)
613607
| Type::GenericParam(_) => false,
@@ -623,7 +617,7 @@ pub fn type_def_is_blittable(row: TypeDef) -> bool {
623617
if row.flags().contains(TypeAttributes::WindowsRuntime) {
624618
row.fields().all(|field| field_is_blittable(field, row))
625619
} else {
626-
true
620+
!matches!(row.type_name(), TypeName::VARIANT | TypeName::PROPVARIANT)
627621
}
628622
}
629623
TypeKind::Enum => true,

crates/libs/bindgen/src/rust/structs.rs

+4
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ fn gen_clone(
217217
.flags()
218218
.contains(metadata::TypeAttributes::WindowsRuntime)
219219
|| def.class_layout().is_some()
220+
|| matches!(
221+
def.type_name(),
222+
metadata::TypeName::VARIANT | metadata::TypeName::PROPVARIANT
223+
)
220224
{
221225
quote! {}
222226
} else {

crates/libs/bindgen/src/rust/writer.rs

-14
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,6 @@ impl Writer {
159159
let crate_name = self.crate_name();
160160
quote! { #crate_name BSTR }
161161
}
162-
metadata::Type::Name(metadata::TypeName::VARIANT) => {
163-
let crate_name = self.crate_name();
164-
quote! { #crate_name VARIANT }
165-
}
166-
metadata::Type::Name(metadata::TypeName::PROPVARIANT) => {
167-
let crate_name = self.crate_name();
168-
quote! { #crate_name PROPVARIANT }
169-
}
170162
metadata::Type::Object => {
171163
if self.sys {
172164
quote! { *mut core::ffi::c_void }
@@ -271,12 +263,6 @@ impl Writer {
271263
metadata::Type::Name(metadata::TypeName::BSTR) => {
272264
quote! { core::mem::MaybeUninit<windows_core::BSTR> }
273265
}
274-
metadata::Type::Name(metadata::TypeName::VARIANT) => {
275-
quote! { core::mem::MaybeUninit<windows_core::VARIANT> }
276-
}
277-
metadata::Type::Name(metadata::TypeName::PROPVARIANT) => {
278-
quote! { core::mem::MaybeUninit<windows_core::PROPVARIANT> }
279-
}
280266
metadata::Type::Win32Array(kind, len) => {
281267
let name = self.type_abi_name(kind);
282268
let len = Literal::usize_unsuffixed(*len);

0 commit comments

Comments
 (0)