diff --git a/compiler/src/statement/assign/assign.rs b/compiler/src/statement/assign/assign.rs index 57f77e8d35..444a9a7c9b 100644 --- a/compiler/src/statement/assign/assign.rs +++ b/compiler/src/statement/assign/assign.rs @@ -77,7 +77,7 @@ impl> ConstrainedProgram { function_scope, indicator, variable_name, - range_or_expression, + *range_or_expression, new_value, span, ), diff --git a/compiler/src/statement/statement.rs b/compiler/src/statement/statement.rs index df5939b68d..35e293a310 100644 --- a/compiler/src/statement/statement.rs +++ b/compiler/src/statement/statement.rs @@ -71,7 +71,7 @@ impl> ConstrainedProgram { declared_circuit_reference, indicator, variable, - expression, + *expression, span, )?; } @@ -95,8 +95,8 @@ impl> ConstrainedProgram { function_scope, indicator, index, - start, - stop, + *start, + *stop, statements, return_type, span, diff --git a/compiler/src/value/group/targets/edwards_bls12.rs b/compiler/src/value/group/targets/edwards_bls12.rs index 9f8a9e8843..1fef04ced4 100644 --- a/compiler/src/value/group/targets/edwards_bls12.rs +++ b/compiler/src/value/group/targets/edwards_bls12.rs @@ -48,7 +48,7 @@ use std::{ #[derive(Clone, Debug)] pub enum EdwardsGroupType { Constant(EdwardsAffine), - Allocated(EdwardsBlsGadget), + Allocated(Box), } impl GroupType for EdwardsGroupType { @@ -60,7 +60,7 @@ impl GroupType for EdwardsGroupType { fn to_allocated>(&self, mut cs: CS, span: Span) -> Result { self.allocated(cs.ns(|| format!("allocate affine point {}:{}", span.line, span.start))) - .map(|result| EdwardsGroupType::Allocated(result)) + .map(|ebg| EdwardsGroupType::Allocated(Box::new(ebg))) .map_err(|error| GroupError::synthesis_error(error, span)) } @@ -71,7 +71,7 @@ impl GroupType for EdwardsGroupType { let result = , Fq>>::negate(group, cs) .map_err(|e| GroupError::negate_operation(e, span))?; - Ok(EdwardsGroupType::Allocated(result)) + Ok(EdwardsGroupType::Allocated(Box::new(result))) } } } @@ -90,16 +90,16 @@ impl GroupType for EdwardsGroupType { ) .map_err(|e| GroupError::binary_operation("+".to_string(), e, span))?; - Ok(EdwardsGroupType::Allocated(result)) + Ok(EdwardsGroupType::Allocated(Box::new(result))) } (EdwardsGroupType::Constant(constant_value), EdwardsGroupType::Allocated(allocated_value)) | (EdwardsGroupType::Allocated(allocated_value), EdwardsGroupType::Constant(constant_value)) => { - Ok(EdwardsGroupType::Allocated( + Ok(EdwardsGroupType::Allocated(Box::new( allocated_value .add_constant(cs, constant_value) .map_err(|e| GroupError::binary_operation("+".to_string(), e, span))?, - )) + ))) } } } @@ -118,16 +118,16 @@ impl GroupType for EdwardsGroupType { ) .map_err(|e| GroupError::binary_operation("-".to_string(), e, span))?; - Ok(EdwardsGroupType::Allocated(result)) + Ok(EdwardsGroupType::Allocated(Box::new(result))) } (EdwardsGroupType::Constant(constant_value), EdwardsGroupType::Allocated(allocated_value)) | (EdwardsGroupType::Allocated(allocated_value), EdwardsGroupType::Constant(constant_value)) => { - Ok(EdwardsGroupType::Allocated( + Ok(EdwardsGroupType::Allocated(Box::new( allocated_value .sub_constant(cs, constant_value) .map_err(|e| GroupError::binary_operation("-".to_string(), e, span))?, - )) + ))) } } } @@ -316,7 +316,7 @@ impl AllocGadget for EdwardsGroupType { Self::alloc_helper(value_gen) })?; - Ok(EdwardsGroupType::Allocated(value)) + Ok(EdwardsGroupType::Allocated(Box::new(value))) } fn alloc_input Result, T: Borrow, CS: ConstraintSystem>( @@ -327,7 +327,7 @@ impl AllocGadget for EdwardsGroupType { Self::alloc_helper(value_gen) })?; - Ok(EdwardsGroupType::Allocated(value)) + Ok(EdwardsGroupType::Allocated(Box::new(value))) } } @@ -454,7 +454,7 @@ impl CondSelectGadget for EdwardsGroupType { let second_gadget = second.allocated(cs.ns(|| "second"))?; let result = EdwardsBlsGadget::conditionally_select(cs, cond, &first_gadget, &second_gadget)?; - Ok(EdwardsGroupType::Allocated(result)) + Ok(EdwardsGroupType::Allocated(Box::new(result))) } } diff --git a/typed/src/common/assignee.rs b/typed/src/common/assignee.rs index afa7f1c460..c430b99d0c 100644 --- a/typed/src/common/assignee.rs +++ b/typed/src/common/assignee.rs @@ -27,7 +27,7 @@ use std::fmt; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] pub enum Assignee { Identifier(Identifier), - Array(Box, RangeOrExpression), + Array(Box, Box), Tuple(Box, usize), CircuitField(Box, Identifier), // (circuit name, circuit field name) } @@ -54,7 +54,7 @@ impl<'ast> From> for Assignee { .into_iter() .fold(variable, |acc, access| match access { AstAssigneeAccess::Array(array) => { - Assignee::Array(Box::new(acc), RangeOrExpression::from(array.expression)) + Assignee::Array(Box::new(acc), Box::new(RangeOrExpression::from(array.expression))) } AstAssigneeAccess::Tuple(tuple) => { Assignee::Tuple(Box::new(acc), Expression::get_count_from_ast(tuple.number)) diff --git a/typed/src/statements/statement.rs b/typed/src/statements/statement.rs index d91880bea6..edbaaf64d8 100644 --- a/typed/src/statements/statement.rs +++ b/typed/src/statements/statement.rs @@ -36,9 +36,9 @@ use std::fmt; pub enum Statement { Return(Expression, Span), Definition(Declare, Variables, Vec, Span), - Assign(Assignee, Expression, Span), + Assign(Assignee, Box, Span), Conditional(ConditionalStatement, Span), - Iteration(Identifier, Expression, Expression, Vec, Span), + Iteration(Identifier, Box, Box, Vec, Span), Console(ConsoleFunctionCall), Expression(Expression, Span), } @@ -78,7 +78,7 @@ impl<'ast> From> for Statement { match statement.assign { AssignOperation::Assign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::from(statement.expression), + Box::new(Expression::from(statement.expression)), Span::from(statement.span), ), operation_assign => { @@ -88,47 +88,47 @@ impl<'ast> From> for Statement { match operation_assign { AssignOperation::AddAssign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::Add( + Box::new(Expression::Add( Box::new(converted), Box::new(Expression::from(statement.expression)), Span::from(statement.span.clone()), - ), + )), Span::from(statement.span), ), AssignOperation::SubAssign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::Sub( + Box::new(Expression::Sub( Box::new(converted), Box::new(Expression::from(statement.expression)), Span::from(statement.span.clone()), - ), + )), Span::from(statement.span), ), AssignOperation::MulAssign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::Mul( + Box::new(Expression::Mul( Box::new(converted), Box::new(Expression::from(statement.expression)), Span::from(statement.span.clone()), - ), + )), Span::from(statement.span), ), AssignOperation::DivAssign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::Div( + Box::new(Expression::Div( Box::new(converted), Box::new(Expression::from(statement.expression)), Span::from(statement.span.clone()), - ), + )), Span::from(statement.span), ), AssignOperation::PowAssign(ref _assign) => Statement::Assign( Assignee::from(statement.assignee), - Expression::Pow( + Box::new(Expression::Pow( Box::new(converted), Box::new(Expression::from(statement.expression)), Span::from(statement.span.clone()), - ), + )), Span::from(statement.span), ), AssignOperation::Assign(ref _assign) => unimplemented!("cannot assign twice to assign statement"), @@ -142,8 +142,8 @@ impl<'ast> From> for Statement { fn from(statement: ForStatement<'ast>) -> Self { Statement::Iteration( Identifier::from(statement.index), - Expression::from(statement.start), - Expression::from(statement.stop), + Box::new(Expression::from(statement.start)), + Box::new(Expression::from(statement.stop)), statement .statements .into_iter()