From 256dd26b99156f3cdef48e1432c6ae67489fec66 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Sat, 16 May 2026 01:23:35 -0700 Subject: [PATCH] Recognize ExtractPosition/InjectPosition in the node macro context analyzer Also, fix migration missing alias --- node-graph/graph-craft/src/document/value.rs | 2 +- node-graph/node-macro/src/parsing.rs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/node-graph/graph-craft/src/document/value.rs b/node-graph/graph-craft/src/document/value.rs index c8b3c0b2..5b03f110 100644 --- a/node-graph/graph-craft/src/document/value.rs +++ b/node-graph/graph-craft/src/document/value.rs @@ -64,7 +64,7 @@ macro_rules! tagged_value { /// Stored compactly as a `GradientStops`, materializes as a single-row `List` at runtime via `to_dynany`/`to_any`. Aliases recover legacy on-disk shapes. /// (Old documents that stored a full `Gradient` struct under this same `"Gradient"` tag are routed to `FillGradient` by `deserialize_tagged_value_with_legacy_migration`.) #[serde(deserialize_with = "graphic_types::vector_types::gradient::migrate_to_gradient_stops")] // TODO: Eventually remove this migration document upgrade code - #[serde(alias = "GradientTable", alias = "GradientPositions")] + #[serde(alias = "GradientTable", alias = "GradientPositions", alias = "GradientStops")] Gradient(GradientStops), /// Stored compactly as a `Vec`, materializes as `List` at runtime via `to_dynany`/`to_any`. Aliases recover legacy on-disk shapes. #[serde(deserialize_with = "brush_nodes::migrations::migrate_to_brush_strokes")] // TODO: Eventually remove this migration document upgrade code diff --git a/node-graph/node-macro/src/parsing.rs b/node-graph/node-macro/src/parsing.rs index 88db9120..8d2420b9 100644 --- a/node-graph/node-macro/src/parsing.rs +++ b/node-graph/node-macro/src/parsing.rs @@ -550,12 +550,14 @@ fn parse_context_feature_idents(ty: &Type) -> Vec { | "ExtractRealTime" | "ExtractAnimationTime" | "ExtractPointerPosition" + | "ExtractPosition" | "ExtractIndex" | "ExtractVarArgs" | "InjectFootprint" | "InjectRealTime" | "InjectAnimationTime" | "InjectPointerPosition" + | "InjectPosition" | "InjectIndex" | "InjectVarArgs" => { features.push(segment.ident.clone());