Skip to content

Commit a8e14c7

Browse files
authored
Remove "implement" feature (#3333)
1 parent 8a39bcb commit a8e14c7

File tree

588 files changed

+452705
-453197
lines changed

Some content is hidden

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

588 files changed

+452705
-453197
lines changed

crates/libs/bindgen/src/rust/extensions/mod.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,3 @@ pub fn gen_mod(_writer: &Writer, namespace: &str) -> TokenStream {
2424
_ => quote!(),
2525
}
2626
}
27-
28-
/// Generates extension code that is subject to the `implement` feature for a specific namespace
29-
pub fn gen_impl(_namespace: &str) -> TokenStream {
30-
TokenStream::new()
31-
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use super::*;
22
use metadata::HasAttributes;
33

44
pub fn writer(writer: &Writer, def: metadata::TypeDef) -> TokenStream {
5-
if def.kind() != metadata::TypeKind::Interface
6-
|| (!writer.implement && def.has_attribute("ExclusiveToAttribute"))
5+
if !(def.kind() == metadata::TypeKind::Interface
6+
&& (writer.implement || (writer.package && !def.has_attribute("ExclusiveToAttribute"))))
77
{
88
return quote! {};
99
}
@@ -190,12 +190,15 @@ pub fn writer(writer: &Writer, def: metadata::TypeDef) -> TokenStream {
190190
}
191191
}
192192
#[doc(hidden)]
193+
#[cfg(feature = "std")]
193194
#features
194195
struct #implvtbl_ident<T: #impl_ident> (core::marker::PhantomData<T>);
196+
#[cfg(feature = "std")]
195197
#features
196198
impl<T: #impl_ident> #implvtbl_ident<T> {
197199
const VTABLE: #vtbl_ident = #vtbl_ident::new::<T>();
198200
}
201+
#[cfg(feature = "std")]
199202
#features
200203
impl #type_ident {
201204
pub fn new<'a, T: #impl_ident>(this: &'a T) -> windows_core::ScopedInterface<'a, Self> {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,5 +230,6 @@ fn gen_win_interface(writer: &Writer, def: metadata::TypeDef) -> TokenStream {
230230
has_unknown_base,
231231
));
232232
tokens.combine(&writer.interface_vtbl(def, generics, &constraints, &features));
233+
tokens.combine(&implements::writer(writer, def));
233234
tokens
234235
}

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

Lines changed: 1 addition & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -113,26 +113,11 @@ fn gen_package(writer: &Writer) -> Result<()> {
113113

114114
trees.par_iter().try_for_each(|tree| {
115115
let directory = format!("{directory}/{}", tree.namespace.replace('.', "/"));
116-
let mut tokens = namespace(writer, tree);
117-
118-
let tokens_impl = if !writer.sys {
119-
namespace_impl(writer, tree)
120-
} else {
121-
String::new()
122-
};
123-
124-
if !writer.sys && !tokens_impl.is_empty() {
125-
tokens.push_str("#[cfg(feature = \"implement\")]\ncore::include!(\"impl.rs\");\n");
126-
}
116+
let tokens = namespace(writer, tree);
127117

128118
let output = format!("{directory}/mod.rs");
129119
write_to_file(&output, try_format(writer, &tokens))?;
130120

131-
if !writer.sys && !tokens_impl.is_empty() {
132-
let output = format!("{directory}/impl.rs");
133-
write_to_file(&output, try_format(writer, &tokens_impl))?;
134-
}
135-
136121
Ok::<(), Error>(())
137122
})?;
138123

@@ -248,43 +233,6 @@ fn namespace(writer: &Writer, tree: &Tree) -> String {
248233
}
249234

250235
tokens.combine(&extensions::gen_mod(writer, tree.namespace));
251-
252-
if writer.implement {
253-
tokens.push_str(&namespace_impl(writer, tree));
254-
}
255-
256-
tokens.into_string()
257-
}
258-
259-
fn namespace_impl(writer: &Writer, tree: &Tree) -> String {
260-
let writer = &mut writer.clone();
261-
writer.namespace = tree.namespace;
262-
let mut types = std::collections::BTreeMap::new();
263-
264-
for item in writer.reader.namespace_items(tree.namespace) {
265-
if let metadata::Item::Type(def) = item {
266-
let type_name = def.type_name();
267-
if writer.reader.core_type(type_name).is_some() {
268-
continue;
269-
}
270-
if def.kind() != metadata::TypeKind::Interface {
271-
continue;
272-
}
273-
let tokens = implements::writer(writer, def);
274-
275-
if !tokens.is_empty() {
276-
types.insert(type_name.name(), tokens);
277-
}
278-
}
279-
}
280-
281-
let types = types.values();
282-
283-
let mut tokens = quote! {
284-
#(#types)*
285-
};
286-
287-
tokens.combine(&extensions::gen_impl(tree.namespace));
288236
tokens.into_string()
289237
}
290238

crates/libs/windows/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ path = "../targets"
3939
default = ["std"]
4040
docs = []
4141
deprecated = []
42-
implement = []
4342
std = ["windows-core/std"]
4443
# generated features
4544
AI = ["Foundation"]

crates/libs/windows/src/Windows/AI/MachineLearning/impl.rs

Lines changed: 0 additions & 144 deletions
This file was deleted.

0 commit comments

Comments
 (0)