Skip to content

Commit e707729

Browse files
committed
node macro: copy visibility from node function
1 parent 9456b1b commit e707729

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

node-graph/gstd/src/raster.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ fn mask(
231231
}
232232

233233
#[node_macro::node(category(""))]
234-
fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable<CPU>, bounds: DAffine2) -> RasterDataTable<CPU> {
234+
pub fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable<CPU>, bounds: DAffine2) -> RasterDataTable<CPU> {
235235
let mut result_table = RasterDataTable::default();
236236

237237
for mut image_instance in image.instance_iter() {
@@ -284,7 +284,7 @@ fn extend_image_to_bounds(_: impl Ctx, image: RasterDataTable<CPU>, bounds: DAff
284284
}
285285

286286
#[node_macro::node(category("Debug: Raster"))]
287-
fn empty_image(_: impl Ctx, transform: DAffine2, color: Color) -> RasterDataTable<CPU> {
287+
pub fn empty_image(_: impl Ctx, transform: DAffine2, color: Color) -> RasterDataTable<CPU> {
288288
let width = transform.transform_vector2(DVec2::new(1., 0.)).length() as u32;
289289
let height = transform.transform_vector2(DVec2::new(0., 1.)).length() as u32;
290290

node-graph/node-macro/src/codegen.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ static NODE_ID: AtomicU64 = AtomicU64::new(0);
1212

1313
pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStream2> {
1414
let ParsedNodeFn {
15+
vis,
1516
attributes,
1617
fn_name,
1718
struct_name,
@@ -345,7 +346,7 @@ pub(crate) fn generate_node_code(parsed: &ParsedNodeFn) -> syn::Result<TokenStre
345346
/// Underlying implementation for [#struct_name]
346347
#[inline]
347348
#[allow(clippy::too_many_arguments)]
348-
pub(crate) #async_keyword fn #fn_name <'n, #(#fn_generics,)*> (#input_ident: #input_type #(, #field_idents: #field_types)*) -> #output_type #where_clause #body
349+
#vis #async_keyword fn #fn_name <'n, #(#fn_generics,)*> (#input_ident: #input_type #(, #field_idents: #field_types)*) -> #output_type #where_clause #body
349350

350351
#[automatically_derived]
351352
impl<'n, #(#fn_generics,)* #(#struct_generics,)* #(#future_idents,)*> #graphene_core::Node<'n, #input_type> for #mod_name::#struct_name<#(#struct_generics,)*>

node-graph/node-macro/src/parsing.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ use syn::punctuated::Punctuated;
77
use syn::spanned::Spanned;
88
use syn::token::{Comma, RArrow};
99
use syn::{
10-
AttrStyle, Attribute, Error, Expr, ExprTuple, FnArg, GenericParam, Ident, ItemFn, Lit, LitFloat, LitInt, LitStr, Meta, Pat, PatIdent, PatType, Path, ReturnType, Type, TypeParam, WhereClause,
11-
parse_quote,
10+
AttrStyle, Attribute, Error, Expr, ExprTuple, FnArg, GenericParam, Ident, ItemFn, Lit, LitFloat, LitInt, LitStr, Meta, Pat, PatIdent, PatType, Path, ReturnType, Type, TypeParam, Visibility,
11+
WhereClause, parse_quote,
1212
};
1313

1414
use crate::codegen::generate_node_code;
@@ -22,6 +22,7 @@ pub(crate) struct Implementation {
2222

2323
#[derive(Debug)]
2424
pub(crate) struct ParsedNodeFn {
25+
pub(crate) vis: Visibility,
2526
pub(crate) attributes: NodeFnAttributes,
2627
pub(crate) fn_name: Ident,
2728
pub(crate) struct_name: Ident,
@@ -263,6 +264,7 @@ fn parse_node_fn(attr: TokenStream2, item: TokenStream2) -> syn::Result<ParsedNo
263264
let attributes = syn::parse2::<NodeFnAttributes>(attr.clone()).map_err(|e| Error::new(e.span(), format!("Failed to parse node_fn attributes: {}", e)))?;
264265
let input_fn = syn::parse2::<ItemFn>(item.clone()).map_err(|e| Error::new(e.span(), format!("Failed to parse function: {}. Make sure it's a valid Rust function.", e)))?;
265266

267+
let vis = input_fn.vis;
266268
let fn_name = input_fn.sig.ident.clone();
267269
let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal));
268270
let mod_name = fn_name.clone();
@@ -297,6 +299,7 @@ fn parse_node_fn(attr: TokenStream2, item: TokenStream2) -> syn::Result<ParsedNo
297299
.fold(String::new(), |acc, b| acc + &b + "\n");
298300

299301
Ok(ParsedNodeFn {
302+
vis,
300303
attributes,
301304
fn_name,
302305
struct_name,
@@ -748,6 +751,7 @@ mod tests {
748751

749752
let parsed = parse_node_fn(attr, input).unwrap();
750753
let expected = ParsedNodeFn {
754+
vis: Visibility::Inherited,
751755
attributes: NodeFnAttributes {
752756
category: Some(parse_quote!("Math: Arithmetic")),
753757
display_name: None,
@@ -808,6 +812,7 @@ mod tests {
808812

809813
let parsed = parse_node_fn(attr, input).unwrap();
810814
let expected = ParsedNodeFn {
815+
vis: Visibility::Inherited,
811816
attributes: NodeFnAttributes {
812817
category: Some(parse_quote!("General")),
813818
display_name: None,
@@ -879,6 +884,7 @@ mod tests {
879884

880885
let parsed = parse_node_fn(attr, input).unwrap();
881886
let expected = ParsedNodeFn {
887+
vis: Visibility::Inherited,
882888
attributes: NodeFnAttributes {
883889
category: Some(parse_quote!("Vector: Shape")),
884890
display_name: None,
@@ -935,6 +941,7 @@ mod tests {
935941

936942
let parsed = parse_node_fn(attr, input).unwrap();
937943
let expected = ParsedNodeFn {
944+
vis: Visibility::Inherited,
938945
attributes: NodeFnAttributes {
939946
category: Some(parse_quote!("Raster: Adjustment")),
940947
display_name: None,
@@ -1003,6 +1010,7 @@ mod tests {
10031010

10041011
let parsed = parse_node_fn(attr, input).unwrap();
10051012
let expected = ParsedNodeFn {
1013+
vis: Visibility::Inherited,
10061014
attributes: NodeFnAttributes {
10071015
category: Some(parse_quote!("Math: Arithmetic")),
10081016
display_name: None,
@@ -1059,6 +1067,7 @@ mod tests {
10591067

10601068
let parsed = parse_node_fn(attr, input).unwrap();
10611069
let expected = ParsedNodeFn {
1070+
vis: Visibility::Inherited,
10621071
attributes: NodeFnAttributes {
10631072
category: Some(parse_quote!("IO")),
10641073
display_name: None,
@@ -1115,6 +1124,7 @@ mod tests {
11151124

11161125
let parsed = parse_node_fn(attr, input).unwrap();
11171126
let expected = ParsedNodeFn {
1127+
vis: Visibility::Inherited,
11181128
attributes: NodeFnAttributes {
11191129
category: Some(parse_quote!("Custom")),
11201130
display_name: Some(parse_quote!("CustomNode2")),

0 commit comments

Comments
 (0)