diff options
| author | Kamen Mladenov <kamen@syndamia.com> | 2025-04-07 16:25:53 +0300 |
|---|---|---|
| committer | Kamen Mladenov <kamen@syndamia.com> | 2025-04-07 17:41:20 +0300 |
| commit | 3ea60f8a8eaf45cfd574afa008ef93e07350be7f (patch) | |
| tree | 0f05d2229a1cfc62c057d6e095c9fbcd2757bbca /zkvms/risc0/wrapper_macro/src/lib.rs | |
| parent | a6c3fcf5eb3f31eb1d85dae55187e2bf2b285e48 (diff) | |
| download | zkVMs-benchmarks-3ea60f8a8eaf45cfd574afa008ef93e07350be7f.tar zkVMs-benchmarks-3ea60f8a8eaf45cfd574afa008ef93e07350be7f.tar.gz zkVMs-benchmarks-3ea60f8a8eaf45cfd574afa008ef93e07350be7f.zip | |
feat(zkvms/risc0): Update to use FunctionDefinition
Diffstat (limited to 'zkvms/risc0/wrapper_macro/src/lib.rs')
| -rw-r--r-- | zkvms/risc0/wrapper_macro/src/lib.rs | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/zkvms/risc0/wrapper_macro/src/lib.rs b/zkvms/risc0/wrapper_macro/src/lib.rs index 7fa328b..c43f5c1 100644 --- a/zkvms/risc0/wrapper_macro/src/lib.rs +++ b/zkvms/risc0/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_divide_public, 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,29 +32,26 @@ use crate::parse_fn::{args_divide_grouped, args_divide_public, args_split, split /// ``` #[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::<TokenStream>()); - } + let args = fd + .arguments() + .into_iter() + .map(|x| format!("let {x} = read();")) + .collect::<String>(); - let public_inputs = toml::from_str::<toml::Table>(include_str!(concat!( - env!("INPUTS_DIR"), - "/default_public_input.toml" - ))) - .unwrap(); - let public_patterns = args_divide_public(&args, &public_inputs.keys().collect()) - .0 - .0; - for pattern in public_patterns.iter() { - out.extend(format!("commit(&{});", pattern).parse::<TokenStream>()); - } + let mut out = TokenStream::new(); + out.extend(args.parse::<TokenStream>()); - let (ts_patterns, _) = args_divide_grouped(&args); + let commits = fd + .public_patterns() + .clone() + .into_iter() + .map(|x| format!("commit(&{x});")) + .collect::<String>(); + out.extend(commits.parse::<TokenStream>()); - out.extend(format!("commit(&zkp::{}{});", name, ts_patterns).parse::<TokenStream>()); + out.extend(format!("commit(&zkp::{}({}));", fd.name, fd.grouped_patterns()).parse::<TokenStream>()); let mut block = TokenStream::new(); block.extend(format!("{{ {} }}", out).parse::<TokenStream>()); |
