Rename record_edge_type to record_source_type

This commit is contained in:
Dennis Kobert
2026-09-06 16:27:11 +00:00
parent 2921f44e5c
commit 33f7257e47
7 changed files with 33 additions and 33 deletions
+11 -11
View File
@@ -364,19 +364,19 @@ macro_rules! tagged_value {
// ======================= // =======================
// RECORD WIRES, WHICH LAND AS THEIR ELEMENT // RECORD WIRES, WHICH LAND AS THEIR ELEMENT
// ======================= // =======================
if ty == core_types::registry::record_edge_type::<()>() { if ty == core_types::registry::record_source_type::<()>() {
let edge = handle.downcast_record::<()>().map_err(|e| format!("{e:?}"))?; let edge = handle.downcast_record::<()>().map_err(|e| format!("{e:?}"))?;
return Ok(core_types::record::serve_input(&edge, ctx, frames).map(|_| TaggedValue::None)); return Ok(core_types::record::serve_input(&edge, ctx, frames).map(|_| TaggedValue::None));
} }
$( $(
if ty == core_types::registry::record_edge_type::<$ty>() { if ty == core_types::registry::record_source_type::<$ty>() {
let layout = handle.layout().clone(); let layout = handle.layout().clone();
let edge = handle.downcast_record::<$ty>().map_err(|e| format!("{e:?}"))?; let edge = handle.downcast_record::<$ty>().map_err(|e| format!("{e:?}"))?;
return Ok(core_types::record::serve_input(&edge, ctx, frames) return Ok(core_types::record::serve_input(&edge, ctx, frames)
.map(|value| TaggedValue::$identifier(unsafe { core_types::record::read_element::<$ty>(layout.rec(&value)) }))); .map(|value| TaggedValue::$identifier(unsafe { core_types::record::read_element::<$ty>(layout.rec(&value)) })));
} }
)* )*
if ty == core_types::registry::record_edge_type::<RenderOutput>() { if ty == core_types::registry::record_source_type::<RenderOutput>() {
let layout = handle.layout().clone(); let layout = handle.layout().clone();
let edge = handle.downcast_record::<RenderOutput>().map_err(|e| format!("{e:?}"))?; let edge = handle.downcast_record::<RenderOutput>().map_err(|e| format!("{e:?}"))?;
return Ok(core_types::record::serve_input(&edge, ctx, frames) return Ok(core_types::record::serve_input(&edge, ctx, frames)
@@ -919,27 +919,27 @@ mod typedefault_dispatch {
mod leveled_edges { mod leveled_edges {
use super::*; use super::*;
use core_types::descriptor; use core_types::descriptor;
use core_types::registry::record_edge_type; use core_types::registry::record_source_type;
#[test] #[test]
fn list_variants_produce_leveled_edges_typed_by_element() { fn list_variants_produce_leveled_edges_typed_by_element() {
let edge = TaggedValue::F64Array(vec![1., 2., 3.]).to_edge().unwrap(); let edge = TaggedValue::F64Array(vec![1., 2., 3.]).to_edge().unwrap();
assert_eq!(edge.ty(), &record_edge_type::<f64>()); assert_eq!(edge.ty(), &record_source_type::<f64>());
assert_eq!(edge.layout().depth, 1); assert_eq!(edge.layout().depth, 1);
let edge = TaggedValue::Color(Some(Color::default())).to_edge().unwrap(); let edge = TaggedValue::Color(Some(Color::default())).to_edge().unwrap();
assert_eq!(edge.ty(), &record_edge_type::<Color>()); assert_eq!(edge.ty(), &record_source_type::<Color>());
assert_eq!(edge.layout().depth, 1); assert_eq!(edge.layout().depth, 1);
let edge = TaggedValue::TypeDefault(descriptor!(List<Graphic>)).to_edge().unwrap(); let edge = TaggedValue::TypeDefault(descriptor!(List<Graphic>)).to_edge().unwrap();
assert_eq!(edge.ty(), &record_edge_type::<Graphic>()); assert_eq!(edge.ty(), &record_source_type::<Graphic>());
assert_eq!(edge.layout().depth, 1); assert_eq!(edge.layout().depth, 1);
} }
#[test] #[test]
fn scalar_variants_keep_their_rank_zero_edges() { fn scalar_variants_keep_their_rank_zero_edges() {
let edge = TaggedValue::Bool(true).to_edge().unwrap(); let edge = TaggedValue::Bool(true).to_edge().unwrap();
assert_eq!(edge.ty(), &record_edge_type::<bool>()); assert_eq!(edge.ty(), &record_source_type::<bool>());
assert_eq!(edge.layout().depth, 0); assert_eq!(edge.layout().depth, 0);
} }
@@ -961,7 +961,7 @@ mod leveled_edges {
#[cfg(test)] #[cfg(test)]
mod record_defaults { mod record_defaults {
use super::*; use super::*;
use core_types::registry::record_edge_type; use core_types::registry::record_source_type;
// The registry can present a record row first (wasm registration order), // The registry can present a record row first (wasm registration order),
// so primitive defaults must parse through the record wrapping. // so primitive defaults must parse through the record wrapping.
@@ -969,7 +969,7 @@ mod record_defaults {
fn primitive_defaults_parse_through_record_wires() { fn primitive_defaults_parse_through_record_wires() {
let leveled = core_types::registry::record_type::<f64>(); let leveled = core_types::registry::record_type::<f64>();
assert_eq!(TaggedValue::from_primitive_string("2.", &leveled), Some(TaggedValue::F64(2.))); assert_eq!(TaggedValue::from_primitive_string("2.", &leveled), Some(TaggedValue::F64(2.)));
assert_eq!(TaggedValue::from_primitive_string("5", &record_edge_type::<u32>()), Some(TaggedValue::U32(5))); assert_eq!(TaggedValue::from_primitive_string("5", &record_source_type::<u32>()), Some(TaggedValue::U32(5)));
assert_eq!(TaggedValue::from_primitive_string("true", &record_edge_type::<bool>()), Some(TaggedValue::Bool(true))); assert_eq!(TaggedValue::from_primitive_string("true", &record_source_type::<bool>()), Some(TaggedValue::Bool(true)));
} }
} }
@@ -788,7 +788,7 @@ mod test {
let executor = build_executor(network); let executor = build_executor(network);
let value = executor.tree().get(NodeId(0)).unwrap(); let value = executor.tree().get(NodeId(0)).unwrap();
assert_eq!(value.ty(), &core_types::registry::record_edge_type::<f64>()); assert_eq!(value.ty(), &core_types::registry::record_source_type::<f64>());
assert_eq!(value.layout().depth, 0); assert_eq!(value.layout().depth, 0);
assert_eq!((&executor).execute(()).unwrap(), GPoll::Final(TaggedValue::F64(7.))); assert_eq!((&executor).execute(()).unwrap(), GPoll::Final(TaggedValue::F64(7.)));
} }
@@ -217,7 +217,7 @@ mod node_registry_macros {
io: NodeIOTypes::new( io: NodeIOTypes::new(
concrete!(Context), concrete!(Context),
core_types::registry::record_type::<$to>(), core_types::registry::record_type::<$to>(),
vec![core_types::registry::record_edge_type::<$from>()], vec![core_types::registry::record_source_type::<$from>()],
), ),
constructor: |inputs| { constructor: |inputs| {
if inputs.len() != 1 { if inputs.len() != 1 {
@@ -284,10 +284,10 @@ mod node_registry_macros {
concrete!(Context), concrete!(Context),
core_types::registry::record_type::<$to>(), core_types::registry::record_type::<$to>(),
vec![ vec![
core_types::registry::record_edge_type::<$from>(), core_types::registry::record_source_type::<$from>(),
core_types::registry::record_edge_type::<$convert>(), core_types::registry::record_source_type::<$convert>(),
core_types::registry::record_edge_type::<RuntimeHandle>(), core_types::registry::record_source_type::<RuntimeHandle>(),
core_types::registry::record_edge_type::<SourceId>(), core_types::registry::record_source_type::<SourceId>(),
], ],
), ),
constructor: |inputs| { constructor: |inputs| {
@@ -327,7 +327,7 @@ mod node_registry_macros {
io: NodeIOTypes::new( io: NodeIOTypes::new(
concrete!(Context), concrete!(Context),
core_types::registry::record_type::<$to>(), core_types::registry::record_type::<$to>(),
vec![core_types::registry::record_edge_type::<$from>(), core_types::registry::record_edge_type::<$convert>()], vec![core_types::registry::record_source_type::<$from>(), core_types::registry::record_source_type::<$convert>()],
), ),
constructor: |inputs| { constructor: |inputs| {
if inputs.len() != 2 { if inputs.len() != 2 {
@@ -87,7 +87,7 @@ pub fn record_type<T: 'static>() -> Type {
Type::Record(Box::new(concrete!(T))) Type::Record(Box::new(concrete!(T)))
} }
pub fn record_edge_type<T: 'static>() -> Type { pub fn record_source_type<T: 'static>() -> Type {
Type::Fn(Box::new(concrete!(Context)), Box::new(record_type::<T>())) Type::Fn(Box::new(concrete!(Context)), Box::new(record_type::<T>()))
} }
@@ -209,7 +209,7 @@ unsafe impl Sync for SourceHandle {}
impl SourceHandle { impl SourceHandle {
pub fn new_record<T: 'static>(node: std::sync::Arc<ErasedRecordNode>) -> Self { pub fn new_record<T: 'static>(node: std::sync::Arc<ErasedRecordNode>) -> Self {
Self::new_erased(node, record_edge_type::<T>()) Self::new_erased(node, record_source_type::<T>())
} }
pub fn new_erased<N>(node: std::sync::Arc<N>, ty: Type) -> Self pub fn new_erased<N>(node: std::sync::Arc<N>, ty: Type) -> Self
@@ -260,7 +260,7 @@ impl SourceHandle {
} }
pub fn downcast_record<T: 'static>(self) -> Result<SharedSource<ErasedRecordNode>, ConstructionError> { pub fn downcast_record<T: 'static>(self) -> Result<SharedSource<ErasedRecordNode>, ConstructionError> {
self.downcast_erased(record_edge_type::<T>()) self.downcast_erased(record_source_type::<T>())
} }
/// The erased record source, for callers that dispatch on the layout rather /// The erased record source, for callers that dispatch on the layout rather
@@ -559,7 +559,7 @@ mod tests {
} }
let entry = RegistryEntry { let entry = RegistryEntry {
layout_meta: None, layout_meta: None,
io: NodeIOTypes::new(concrete!(Context), record_type::<u32>(), vec![record_edge_type::<String>()]), io: NodeIOTypes::new(concrete!(Context), record_type::<u32>(), vec![record_source_type::<String>()]),
constructor: construct_strlen, constructor: construct_strlen,
}; };
@@ -572,8 +572,8 @@ mod tests {
assert_eq!( assert_eq!(
construct(&entry, vec![mistyped]).unwrap_err(), construct(&entry, vec![mistyped]).unwrap_err(),
ConstructionError::Type { ConstructionError::Type {
expected: Box::new(record_edge_type::<String>()), expected: Box::new(record_source_type::<String>()),
found: Box::new(record_edge_type::<f64>()), found: Box::new(record_source_type::<f64>()),
} }
); );
} }
@@ -589,7 +589,7 @@ mod tests {
let layout = Node::<ContextImpl>::layout(&counting).clone(); let layout = Node::<ContextImpl>::layout(&counting).clone();
let handle = SourceHandle::new_record::<u32>(Arc::new(counting) as Arc<ErasedRecordNode>); let handle = SourceHandle::new_record::<u32>(Arc::new(counting) as Arc<ErasedRecordNode>);
let duplicate = handle.duplicate(); let duplicate = handle.duplicate();
assert_eq!(*duplicate.ty(), record_edge_type::<u32>()); assert_eq!(*duplicate.ty(), record_source_type::<u32>());
let frames = crate::record::test_frames(1 << 12); let frames = crate::record::test_frames(1 << 12);
let first = handle.downcast_record::<u32>().unwrap(); let first = handle.downcast_record::<u32>().unwrap();
+2 -2
View File
@@ -130,7 +130,7 @@ fn flip_entries_tokens(parsed: &ParsedNodeFn, struct_name: &Ident, regular_field
}; };
let assignment_types = assignment_types.iter(); let assignment_types = assignment_types.iter();
let turbofish = quote!(::<#(#node_underscores,)* #(#assignment_types,)*>); let turbofish = quote!(::<#(#node_underscores,)* #(#assignment_types,)*>);
let input_types = row.iter().map(|ty| quote!(gcore::registry::record_edge_type::<#ty>())); let input_types = row.iter().map(|ty| quote!(gcore::registry::record_source_type::<#ty>()));
let downcasts = names.iter().zip(row.iter()).enumerate().map(|(index, (name, ty))| { let downcasts = names.iter().zip(row.iter()).enumerate().map(|(index, (name, ty))| {
let handle = format_ident!("__handle_{index}"); let handle = format_ident!("__handle_{index}");
let layout = format_ident!("__layout_{index}"); let layout = format_ident!("__layout_{index}");
@@ -340,7 +340,7 @@ fn single_row_entries(parsed: &ParsedNodeFn, struct_name: &Ident, regular_fields
let input_types = slots.iter().map(|slot| match slot { let input_types = slots.iter().map(|slot| match slot {
SlotKind::BaseGeneric(name) => quote!(gcore::registry::generic_record_edge_type(#name)), SlotKind::BaseGeneric(name) => quote!(gcore::registry::generic_record_edge_type(#name)),
SlotKind::BaseConcrete(ty) | SlotKind::Value(ty) | SlotKind::Extracted(ty) | SlotKind::Ranked(ty) => quote!(gcore::registry::record_edge_type::<#ty>()), SlotKind::BaseConcrete(ty) | SlotKind::Value(ty) | SlotKind::Extracted(ty) | SlotKind::Ranked(ty) => quote!(gcore::registry::record_source_type::<#ty>()),
}); });
let downcasts = names.iter().zip(&slots).enumerate().map(|(index, (name, slot))| { let downcasts = names.iter().zip(&slots).enumerate().map(|(index, (name, slot))| {
+3 -3
View File
@@ -551,9 +551,9 @@ mod tests {
let entries = _flat_map_mod::flat_map_entries(); let entries = _flat_map_mod::flat_map_entries();
assert_eq!(entries.len(), 6, "one registry row per content implementation"); assert_eq!(entries.len(), 6, "one registry row per content implementation");
let content_types: Vec<core_types::Type> = entries.iter().map(|entry| entry.io.inputs[0].clone()).collect(); let content_types: Vec<core_types::Type> = entries.iter().map(|entry| entry.io.inputs[0].clone()).collect();
assert_eq!(content_types[0], core_types::registry::record_edge_type::<Graphic>()); assert_eq!(content_types[0], core_types::registry::record_source_type::<Graphic>());
assert_eq!(content_types[1], core_types::registry::record_edge_type::<Vector>()); assert_eq!(content_types[1], core_types::registry::record_source_type::<Vector>());
assert_eq!(content_types[5], core_types::registry::record_edge_type::<String>()); assert_eq!(content_types[5], core_types::registry::record_source_type::<String>());
// The subject and the output stay erased across rows. // The subject and the output stay erased across rows.
assert_eq!(entries[0].io.inputs[1], entries[5].io.inputs[1]); assert_eq!(entries[0].io.inputs[1], entries[5].io.inputs[1]);
assert_eq!(entries[0].io.return_value, entries[5].io.return_value); assert_eq!(entries[0].io.return_value, entries[5].io.return_value);
+3 -3
View File
@@ -1148,12 +1148,12 @@ mod graphene_test {
assert_eq!(entries.len(), 6); assert_eq!(entries.len(), 6);
assert_eq!( assert_eq!(
entries[0].io.inputs, entries[0].io.inputs,
vec![core_types::registry::record_edge_type::<f64>(), core_types::registry::record_edge_type::<f64>()] vec![core_types::registry::record_source_type::<f64>(), core_types::registry::record_source_type::<f64>()]
); );
assert_eq!(entries[0].io.return_value, core_types::registry::record_type::<f64>()); assert_eq!(entries[0].io.return_value, core_types::registry::record_type::<f64>());
assert_eq!( assert_eq!(
entries[3].io.inputs, entries[3].io.inputs,
vec![core_types::registry::record_edge_type::<DVec2>(), core_types::registry::record_edge_type::<DVec2>()] vec![core_types::registry::record_source_type::<DVec2>(), core_types::registry::record_source_type::<DVec2>()]
); );
assert_eq!(entries[3].io.return_value, core_types::registry::record_type::<DVec2>()); assert_eq!(entries[3].io.return_value, core_types::registry::record_type::<DVec2>());
@@ -1179,7 +1179,7 @@ mod graphene_test {
// Routing forwards the whole record, so the branch types need no rows. // Routing forwards the whole record, so the branch types need no rows.
let entries = super::_switch_mod::switch_entries(); let entries = super::_switch_mod::switch_entries();
assert_eq!(entries.len(), 1); assert_eq!(entries.len(), 1);
assert_eq!(entries[0].io.inputs[0], core_types::registry::record_edge_type::<bool>()); assert_eq!(entries[0].io.inputs[0], core_types::registry::record_source_type::<bool>());
assert!(matches!(&entries[0].io.return_value, core_types::Type::Record(element) if matches!(**element, core_types::Type::Generic(_)))); assert!(matches!(&entries[0].io.return_value, core_types::Type::Record(element) if matches!(**element, core_types::Type::Generic(_))));
assert_eq!(entries[0].io.inputs.len(), 3); assert_eq!(entries[0].io.inputs.len(), 3);
} }