Skip to content

Commit 5bd208e

Browse files
committed
WIP11: fix impl Context in the wrong places
1 parent ce24755 commit 5bd208e

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ pub struct NodeParsedField {
144144
pub implementations: Punctuated<Implementation, Comma>,
145145
}
146146

147-
#[derive(Debug)]
147+
#[derive(Clone, Debug)]
148148
pub(crate) struct Input {
149149
pub(crate) pat_ident: PatIdent,
150150
pub(crate) ty: Type,
@@ -672,7 +672,7 @@ pub fn new_node_fn(attr: TokenStream2, item: TokenStream2) -> TokenStream2 {
672672
}
673673

674674
impl ParsedNodeFn {
675-
fn replace_impl_trait_in_input(&mut self) {
675+
pub fn replace_impl_trait_in_input(&mut self) {
676676
if let Type::ImplTrait(impl_trait) = self.input.ty.clone() {
677677
let ident = Ident::new("_Input", impl_trait.span());
678678
let mut bounds = impl_trait.bounds;

node-graph/node-macro/src/shader_nodes/per_pixel_adjust.rs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, Pars
22
use crate::shader_nodes::{ShaderCodegen, ShaderNodeType, ShaderTokens};
33
use convert_case::{Case, Casing};
44
use proc_macro_crate::FoundCrate;
5-
use proc_macro2::{Ident, Span, TokenStream};
5+
use proc_macro2::{Ident, TokenStream};
66
use quote::{ToTokens, format_ident, quote};
77
use std::borrow::Cow;
88
use syn::parse::{Parse, ParseStream};
99
use syn::punctuated::Punctuated;
10-
use syn::{Token, TraitBound, TraitBoundModifier, Type, TypeImplTrait, TypeParamBound};
10+
use syn::{Type, parse_quote};
1111

1212
#[derive(Debug, Clone)]
1313
pub struct PerPixelAdjust {}
@@ -119,7 +119,7 @@ impl PerPixelAdjust {
119119
FoundCrate::Itself => format_ident!("crate"),
120120
FoundCrate::Name(name) => format_ident!("{name}"),
121121
};
122-
let raster_gpu = syn::parse2::<Type>(quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>))?;
122+
let raster_gpu: Type = parse_quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>);
123123

124124
let fields = parsed
125125
.fields
@@ -128,6 +128,7 @@ impl PerPixelAdjust {
128128
ParsedFieldType::Regular(reg @ RegularParsedField { gpu_image: true, .. }) => Ok(ParsedField {
129129
ty: ParsedFieldType::Regular(RegularParsedField {
130130
ty: raster_gpu.clone(),
131+
implementations: Punctuated::default(),
131132
..reg.clone()
132133
}),
133134
..f.clone()
@@ -143,7 +144,7 @@ impl PerPixelAdjust {
143144
}
144145
};
145146

146-
let gpu_node = crate::codegen::generate_node_code(&ParsedNodeFn {
147+
let mut parsed_node_fn = ParsedNodeFn {
147148
vis: parsed.vis.clone(),
148149
attributes: NodeFnAttributes {
149150
shader_node: Some(ShaderNodeType::GpuNode),
@@ -156,15 +157,7 @@ impl PerPixelAdjust {
156157
where_clause: None,
157158
input: Input {
158159
pat_ident: parsed.input.pat_ident.clone(),
159-
ty: Type::ImplTrait(TypeImplTrait {
160-
impl_token: Token![impl](Span::call_site()),
161-
bounds: Punctuated::from_iter([TypeParamBound::Trait(TraitBound {
162-
paren_token: None,
163-
modifier: TraitBoundModifier::None,
164-
lifetimes: None,
165-
path: syn::parse2(quote!(#gcore::context::Ctx))?,
166-
})]),
167-
}),
160+
ty: parse_quote!(impl #gcore::context::Ctx),
168161
implementations: Default::default(),
169162
},
170163
output_type: raster_gpu,
@@ -173,7 +166,9 @@ impl PerPixelAdjust {
173166
body,
174167
crate_name: parsed.crate_name.clone(),
175168
description: "".to_string(),
176-
})?;
169+
};
170+
parsed_node_fn.replace_impl_trait_in_input();
171+
let gpu_node = crate::codegen::generate_node_code(&parsed_node_fn)?;
177172

178173
Ok(quote! {
179174
#node_cfg

0 commit comments

Comments
 (0)