Flip lend-parameter nodes onto record wires and keep the clone adapter plain

This commit is contained in:
Dennis Kobert
2026-08-05 22:57:51 +00:00
parent 3eecc31bfd
commit c20a243fc2
4 changed files with 43 additions and 14 deletions

View File

@@ -113,6 +113,8 @@ pub(crate) struct NodeFnAttributes {
pub(crate) batch: Option<Path>,
/// Whether partial upstream values are mapped to `Pending` instead of flowing into this node
pub(crate) no_partial: bool,
/// Whether this node keeps the plain-wire lowering during the record transition
pub(crate) plain: bool,
}
#[derive(Clone, Debug, Default)]
@@ -375,6 +377,7 @@ impl Parse for NodeFnAttributes {
let mut extent = None;
let mut batch = None;
let mut no_partial = false;
let mut plain = false;
let content = input;
// let content;
@@ -560,6 +563,13 @@ impl Parse for NodeFnAttributes {
//
// Example usage:
// #[node_macro::node(..., no_partial, ...)]
"plain" => {
let path = meta.require_path_only()?;
if plain {
return Err(Error::new_spanned(path, "Multiple 'plain' attributes are not allowed"));
}
plain = true;
}
"no_partial" => {
let path = meta.require_path_only()?;
if no_partial {
@@ -611,6 +621,7 @@ impl Parse for NodeFnAttributes {
extent,
batch,
no_partial,
plain,
})
}
}
@@ -1278,6 +1289,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("add", Span::call_site()),
struct_name: Ident::new("Add", Span::call_site()),
@@ -1354,6 +1366,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("transform", Span::call_site()),
struct_name: Ident::new("Transform", Span::call_site()),
@@ -1444,6 +1457,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("circle", Span::call_site()),
struct_name: Ident::new("Circle", Span::call_site()),
@@ -1516,6 +1530,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("levels", Span::call_site()),
struct_name: Ident::new("Levels", Span::call_site()),
@@ -1600,6 +1615,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("add", Span::call_site()),
struct_name: Ident::new("Add", Span::call_site()),
@@ -1687,6 +1703,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("load_image", Span::call_site()),
struct_name: Ident::new("LoadImage", Span::call_site()),
@@ -1759,6 +1776,7 @@ mod tests {
extent: None,
batch: None,
no_partial: false,
plain: false,
},
fn_name: Ident::new("custom_node", Span::call_site()),
struct_name: Ident::new("CustomNode", Span::call_site()),