Export the async-source flag from the macro and dispatch superseded type deltas in tests

This commit is contained in:
Dennis Kobert
2026-08-02 14:09:27 +00:00
parent e3aa32bc83
commit 8686b2c891
7 changed files with 31 additions and 69 deletions
+5 -1
View File
@@ -998,7 +998,7 @@ pub fn new_node_fn(attr: TokenStream2, item: TokenStream2) -> syn::Result<TokenS
let crate_ident = CrateIdent::default();
let mut parsed_node = parse_node_fn(attr, item.clone()).map_err(|e| Error::new(e.span(), format!("Failed to parse node function:\n{e}")))?;
parsed_node.replace_impl_trait_in_input();
if parsed_node.is_async || crate::codegen::is_source_kernel(&parsed_node.output_type) {
if parsed_node.injects_async_source_fields() {
let core_types = crate_ident.gcore()?.clone();
parsed_node.inject_async_source_fields(&core_types);
}
@@ -1030,6 +1030,10 @@ impl ParsedNodeFn {
}
}
pub fn injects_async_source_fields(&self) -> bool {
self.is_async || crate::codegen::is_source_kernel(&self.output_type)
}
pub fn inject_async_source_fields(&mut self, core_types: &TokenStream2) {
let hidden_field = |name: &str, ty: Type, value_source: ParsedValueSource| ParsedField {
pat_ident: PatIdent {