From 155f57775782c6b1f874ef39c40f07bc2edfb385 Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Mon, 7 Apr 2025 16:40:44 +0300 Subject: feat(zkvms/sp1): Update to use FunctionDefinition --- zkvms/sp1/wrapper_macro/src/lib.rs | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'zkvms') diff --git a/zkvms/sp1/wrapper_macro/src/lib.rs b/zkvms/sp1/wrapper_macro/src/lib.rs index 14dcfad..53965c2 100644 --- a/zkvms/sp1/wrapper_macro/src/lib.rs +++ b/zkvms/sp1/wrapper_macro/src/lib.rs @@ -2,7 +2,7 @@ use proc_macro::TokenStream; #[path = "../../../../guests_macro/src/parse_fn.rs"] mod parse_fn; -use crate::parse_fn::{args_divide_grouped, args_split, split_fn}; +use crate::parse_fn::FunctionDefinition; /// Create a body, which reads all inputs, stores them in variables, then /// commits the ones, defined as public in `default_public_input.toml` to the @@ -32,26 +32,26 @@ use crate::parse_fn::{args_divide_grouped, args_split, split_fn}; /// ``` #[proc_macro] pub fn make_wrapper(item: TokenStream) -> TokenStream { - let (name, args, ret) = split_fn(&item); - let args_split = args_split(&args); + let fd = FunctionDefinition::new(&item); - let mut out = TokenStream::new(); - for arg in args_split { - out.extend(format!("let {} = read();", arg).parse::()); - } + let args = fd + .arguments() + .into_iter() + .map(|x| format!("let {x} = read();")) + .collect::(); - let public_inputs = toml::from_str::(include_str!(concat!( - env!("INPUTS_DIR"), - "/default_public_input.toml" - ))) - .unwrap(); - for input in public_inputs.keys() { - out.extend(format!("commit(&{});", input).parse::()); - } + let mut out = TokenStream::new(); + out.extend(args.parse::()); - let (ts_patterns, _) = args_divide_grouped(&args); + let commits = fd + .public_patterns() + .clone() + .into_iter() + .map(|x| format!("commit(&{x});")) + .collect::(); + out.extend(commits.parse::()); - out.extend(format!("commit(&zkp::{}{});", name, ts_patterns).parse::()); + out.extend(format!("commit(&zkp::{}({}));", fd.name, fd.grouped_patterns()).parse::()); let mut block = TokenStream::new(); block.extend(format!("{{ {} }}", out).parse::()); -- cgit v1.2.3