diff --git a/node-graph/interpreted-executor/src/dynamic_executor.rs b/node-graph/interpreted-executor/src/dynamic_executor.rs index 09200278a2..cdf04440de 100644 --- a/node-graph/interpreted-executor/src/dynamic_executor.rs +++ b/node-graph/interpreted-executor/src/dynamic_executor.rs @@ -801,7 +801,7 @@ mod test { (NodeId(2), ProtoNode::value(ConstructionArgs::Value(value.into()), vec![])), (NodeId(3), proto_node("graphic_nodes::graphic::WriteAttributeNode", vec![NodeId(0), NodeId(1), NodeId(2)])), (NodeId(4), string_value(read_name)), - (NodeId(5), proto_node("graphic_nodes::graphic::ReadAttributeNode", vec![NodeId(3), NodeId(4)])), + (NodeId(5), proto_node("graphic_nodes::graphic::ReadNumberAttributeNode", vec![NodeId(3), NodeId(4)])), ], } } diff --git a/node-graph/nodes/graphic/src/graphic.rs b/node-graph/nodes/graphic/src/graphic.rs index 08a52d7d97..419a377272 100644 --- a/node-graph/nodes/graphic/src/graphic.rs +++ b/node-graph/nodes/graphic/src/graphic.rs @@ -387,12 +387,14 @@ pub fn write_attribute<'e, T, V: WireValue>( Ok((content, Attr(parked))) } -/// Reads the attribute `name` names off each lane. An absent attribute reads as -/// the name's own default, so the value carries the declared type either way; -/// the name is constant text the compiler folds into an offset when the graph -/// compiles. +/// Reads the `f64` attribute `name` names off each lane. An absent attribute +/// reads as the name's own default, so the value is always a number; the name +/// is constant text the compiler folds into an offset when the graph compiles. +/// +/// A name written at another value type is a graph error rather than a +/// conversion, so reading a number is never a coercion of one. #[node_macro::node(category("Attributes: Read"))] -pub fn read_attribute<'e>( +pub fn read_number_attribute<'e>( _: impl Ctx, /// The content whose lanes carry the attribute. (content, value): (f64, Attr<'e, Named>),