@@ -2,12 +2,12 @@ use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, Pars
22use crate :: shader_nodes:: { ShaderCodegen , ShaderNodeType , ShaderTokens } ;
33use convert_case:: { Case , Casing } ;
44use proc_macro_crate:: FoundCrate ;
5- use proc_macro2:: { Ident , Span , TokenStream } ;
5+ use proc_macro2:: { Ident , TokenStream } ;
66use quote:: { ToTokens , format_ident, quote} ;
77use std:: borrow:: Cow ;
88use syn:: parse:: { Parse , ParseStream } ;
99use syn:: punctuated:: Punctuated ;
10- use syn:: { Token , TraitBound , TraitBoundModifier , Type , TypeImplTrait , TypeParamBound } ;
10+ use syn:: { Type , parse_quote } ;
1111
1212#[ derive( Debug , Clone ) ]
1313pub 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