Bladeren bron

Apply the substitutions in the main sigma_compiler_core function

Ian Goldberg 3 maanden geleden
bovenliggende
commit
3602aa75be
2 gewijzigde bestanden met toevoegingen van 7 en 4 verwijderingen
  1. 4 1
      sigma_compiler_core/src/lib.rs
  2. 3 3
      sigma_compiler_derive/src/lib.rs

+ 4 - 1
sigma_compiler_core/src/lib.rs

@@ -162,13 +162,16 @@ impl VisitMut for StatementFixup {
 /// `true`, but you can set one to `false` if you don't need that side
 /// of the protocol.)
 pub fn sigma_compiler_core(
-    spec: &SigmaCompSpec,
+    spec: &mut SigmaCompSpec,
     emit_prover: bool,
     emit_verifier: bool,
 ) -> TokenStream {
     let proto_name = &spec.proto_name;
     let group_name = &spec.group_name;
 
+    // Apply any substitution transformations
+    transform::apply_substitutions(&mut spec.statements, &mut spec.vars).unwrap();
+
     let group_types = quote! {
         pub type Scalar = <super::#group_name as super::Group>::Scalar;
         pub type Point = super::#group_name;

+ 3 - 3
sigma_compiler_derive/src/lib.rs

@@ -1,9 +1,9 @@
 use proc_macro::TokenStream;
-use sigma_compiler_core::{SigmaCompSpec, sigma_compiler_core};
+use sigma_compiler_core::{sigma_compiler_core, SigmaCompSpec};
 use syn::parse_macro_input;
 
 #[proc_macro]
 pub fn sigma_compiler(input: TokenStream) -> TokenStream {
-    let spec = parse_macro_input!(input as SigmaCompSpec);
-    sigma_compiler_core(&spec, true, true).into()
+    let mut spec = parse_macro_input!(input as SigmaCompSpec);
+    sigma_compiler_core(&mut spec, true, true).into()
 }