clippy: fix redundant_clone & clone_on_copy

Signed-off-by: ljedrz <ljedrz@gmail.com>
This commit is contained in:
ljedrz 2020-10-06 09:33:31 +02:00
parent 93369aed33
commit 1fc9b902dd
35 changed files with 93 additions and 94 deletions

View File

@ -53,7 +53,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
// Unwrap assertion value and handle errors // Unwrap assertion value and handle errors
let result_option = match assert_expression { let result_option = match assert_expression {
ConstrainedValue::Boolean(boolean) => boolean.get_value(), ConstrainedValue::Boolean(boolean) => boolean.get_value(),
_ => return Err(ConsoleError::assertion_must_be_boolean(expression_string, span.clone())), _ => return Err(ConsoleError::assertion_must_be_boolean(expression_string, span)),
}; };
let result_bool = result_option.ok_or(ConsoleError::assertion_depends_on_input(span.clone()))?; let result_bool = result_option.ok_or(ConsoleError::assertion_depends_on_input(span.clone()))?;

View File

@ -37,7 +37,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
return Err(ConsoleError::length( return Err(ConsoleError::length(
formatted.containers.len(), formatted.containers.len(),
formatted.parameters.len(), formatted.parameters.len(),
formatted.span.clone(), formatted.span,
)); ));
} }

View File

@ -57,7 +57,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
}; };
let to_resolved = match to { let to_resolved = match to {
Some(to_index) => { Some(to_index) => {
self.enforce_index(cs, file_scope.clone(), function_scope.clone(), to_index, span.clone())? self.enforce_index(cs, file_scope, function_scope, to_index, span)?
} }
None => array.len(), // Array slice ends at array length None => array.len(), // Array slice ends at array length
}; };

View File

@ -47,12 +47,12 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
match type_ { match type_ {
Type::Array(ref type_, ref dimensions) => { Type::Array(ref type_, ref dimensions) => {
let number = match dimensions.first() { let number = match dimensions.first() {
Some(number) => number.clone(), Some(number) => *number,
None => return Err(ExpressionError::unexpected_array(type_.to_string(), span)), None => return Err(ExpressionError::unexpected_array(type_.to_string(), span)),
}; };
expected_dimensions.push(number); expected_dimensions.push(number);
expected_type = Some(type_.outer_dimension(dimensions).clone()); expected_type = Some(type_.outer_dimension(dimensions));
} }
ref type_ => { ref type_ => {
return Err(ExpressionError::unexpected_array(type_.to_string(), span)); return Err(ExpressionError::unexpected_array(type_.to_string(), span));

View File

@ -36,13 +36,13 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let expected_type = Some(Type::IntegerType(IntegerType::U32)); let expected_type = Some(Type::IntegerType(IntegerType::U32));
match self.enforce_operand( match self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
index, index,
span.clone(), span.clone(),
)? { )? {
ConstrainedValue::Integer(number) => Ok(number.to_usize(span.clone())?), ConstrainedValue::Integer(number) => Ok(number.to_usize(span)?),
value => Err(ExpressionError::invalid_index(value.to_string(), span)), value => Err(ExpressionError::invalid_index(value.to_string(), span)),
} }
} }

View File

@ -45,8 +45,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
)?; )?;
let mut resolved_right = self.enforce_operand( let mut resolved_right = self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type.clone(), expected_type.clone(),
right, right,
span.clone(), span.clone(),

View File

@ -45,11 +45,11 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
// access a circuit member using the `self` keyword // access a circuit member using the `self` keyword
if let Expression::Identifier(ref identifier) = *circuit_identifier { if let Expression::Identifier(ref identifier) = *circuit_identifier {
if identifier.is_self() { if identifier.is_self() {
let self_file_scope = new_scope(file_scope.clone(), identifier.name.to_string()); let self_file_scope = new_scope(file_scope, identifier.name.to_string());
let self_function_scope = new_scope(self_file_scope.clone(), identifier.name.to_string()); let self_function_scope = new_scope(self_file_scope.clone(), identifier.name.to_string());
let member_value = let member_value =
self.evaluate_identifier(self_file_scope, self_function_scope, None, circuit_member.clone())?; self.evaluate_identifier(self_file_scope, self_function_scope, None, circuit_member)?;
return Ok(member_value); return Ok(member_value);
} }
@ -58,9 +58,9 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let (circuit_name, members) = match self.enforce_operand( let (circuit_name, members) = match self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope.clone(),
function_scope.clone(), function_scope,
expected_type, expected_type,
*circuit_identifier.clone(), *circuit_identifier,
span.clone(), span.clone(),
)? { )? {
ConstrainedValue::CircuitExpression(name, members) => (name, members), ConstrainedValue::CircuitExpression(name, members) => (name, members),

View File

@ -55,7 +55,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let circuit_identifier = circuit.circuit_name.clone(); let circuit_identifier = circuit.circuit_name.clone();
let mut resolved_members = vec![]; let mut resolved_members = vec![];
for member in circuit.members.clone().into_iter() { for member in circuit.members.into_iter() {
match member { match member {
CircuitMember::CircuitVariable(is_mutable, identifier, type_) => { CircuitMember::CircuitVariable(is_mutable, identifier, type_) => {
let matched_variable = members let matched_variable = members
@ -98,7 +98,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
} }
Ok(ConstrainedValue::CircuitExpression( Ok(ConstrainedValue::CircuitExpression(
circuit_identifier.clone(), circuit_identifier,
resolved_members, resolved_members,
)) ))
} }

View File

@ -36,23 +36,23 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
span: Span, span: Span,
) -> Result<ConstrainedValue<F, G>, ExpressionError> { ) -> Result<ConstrainedValue<F, G>, ExpressionError> {
// Get defined circuit // Get defined circuit
let circuit = match *circuit_identifier.clone() { let circuit = match *circuit_identifier {
Expression::Identifier(identifier) => { Expression::Identifier(identifier) => {
// Use the "Self" keyword to access a static circuit function // Use the "Self" keyword to access a static circuit function
if identifier.is_self() { if identifier.is_self() {
let circuit = self let circuit = self
.get(&file_scope) .get(&file_scope)
.ok_or(ExpressionError::self_keyword(identifier.span.clone()))?; .ok_or(ExpressionError::self_keyword(identifier.span))?;
circuit.to_owned() circuit.to_owned()
} else { } else {
self.evaluate_identifier(file_scope.clone(), function_scope.clone(), expected_type, identifier)? self.evaluate_identifier(file_scope, function_scope, expected_type, identifier)?
} }
} }
expression => self.enforce_expression( expression => self.enforce_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
expression, expression,
)?, )?,

View File

@ -59,8 +59,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let second_value = self.enforce_operand( let second_value = self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
second, second,
span.clone(), span.clone(),

View File

@ -70,8 +70,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Add(left, right, span) => { Expression::Add(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -83,8 +83,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Sub(left, right, span) => { Expression::Sub(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -96,8 +96,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Mul(left, right, span) => { Expression::Mul(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -109,8 +109,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Div(left, right, span) => { Expression::Div(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -122,8 +122,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Pow(left, right, span) => { Expression::Pow(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -141,8 +141,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Or(left, right, span) => { Expression::Or(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -154,8 +154,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::And(left, right, span) => { Expression::And(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*left, *left,
*right, *right,
@ -167,8 +167,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Eq(left, right, span) => { Expression::Eq(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
None, None,
*left, *left,
*right, *right,
@ -180,8 +180,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Ge(left, right, span) => { Expression::Ge(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
None, None,
*left, *left,
*right, *right,
@ -193,8 +193,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Gt(left, right, span) => { Expression::Gt(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
None, None,
*left, *left,
*right, *right,
@ -206,8 +206,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Le(left, right, span) => { Expression::Le(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
None, None,
*left, *left,
*right, *right,
@ -219,8 +219,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
Expression::Lt(left, right, span) => { Expression::Lt(left, right, span) => {
let (resolved_left, resolved_right) = self.enforce_binary_expression( let (resolved_left, resolved_right) = self.enforce_binary_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
None, None,
*left, *left,
*right, *right,

View File

@ -35,7 +35,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
arguments: Vec<Expression>, arguments: Vec<Expression>,
span: Span, span: Span,
) -> Result<ConstrainedValue<F, G>, ExpressionError> { ) -> Result<ConstrainedValue<F, G>, ExpressionError> {
let (declared_circuit_reference, function_value) = match *function.clone() { let (declared_circuit_reference, function_value) = match *function {
Expression::CircuitMemberAccess(circuit_identifier, circuit_member, span) => { Expression::CircuitMemberAccess(circuit_identifier, circuit_member, span) => {
// Call a circuit function that can mutate self. // Call a circuit function that can mutate self.
@ -62,7 +62,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
), ),
}; };
let (outer_scope, function_call) = function_value.extract_function(file_scope.clone(), span.clone())?; let (outer_scope, function_call) = function_value.extract_function(file_scope, span.clone())?;
let name_unique = format!( let name_unique = format!(
"function call {} {}:{}", "function call {} {}:{}",

View File

@ -37,7 +37,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
unresolved_identifier: Identifier, unresolved_identifier: Identifier,
) -> Result<ConstrainedValue<F, G>, ExpressionError> { ) -> Result<ConstrainedValue<F, G>, ExpressionError> {
// Evaluate the identifier name in the current function scope // Evaluate the identifier name in the current function scope
let variable_name = new_scope(function_scope.clone(), unresolved_identifier.to_string()); let variable_name = new_scope(function_scope, unresolved_identifier.to_string());
let identifier_name = new_scope(file_scope, unresolved_identifier.to_string()); let identifier_name = new_scope(file_scope, unresolved_identifier.to_string());
let mut result_value = if let Some(value) = self.get(&variable_name) { let mut result_value = if let Some(value) = self.get(&variable_name) {
@ -58,7 +58,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
return Err(ExpressionError::undefined_identifier(unresolved_identifier)); return Err(ExpressionError::undefined_identifier(unresolved_identifier));
}; };
result_value.resolve_type(expected_type, unresolved_identifier.span.clone())?; result_value.resolve_type(expected_type, unresolved_identifier.span)?;
Ok(result_value) Ok(result_value)
} }

View File

@ -37,14 +37,14 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
) -> Result<ConstrainedValue<F, G>, ExpressionError> { ) -> Result<ConstrainedValue<F, G>, ExpressionError> {
let tuple = match self.enforce_operand( let tuple = match self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
expected_type, expected_type,
*tuple, *tuple,
span.clone(), span.clone(),
)? { )? {
ConstrainedValue::Tuple(tuple) => tuple, ConstrainedValue::Tuple(tuple) => tuple,
value => return Err(ExpressionError::undefined_array(value.to_string(), span.clone())), value => return Err(ExpressionError::undefined_array(value.to_string(), span)),
}; };
if index > tuple.len() - 1 { if index > tuple.len() - 1 {

View File

@ -55,7 +55,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
check_arguments_length(function.input.len(), input.len(), function.span.clone())?; check_arguments_length(function.input.len(), input.len(), function.span.clone())?;
// Store input values as new variables in resolved program // Store input values as new variables in resolved program
for (input_model, input_expression) in function.input.clone().iter().zip(input.into_iter()) { for (input_model, input_expression) in function.input.iter().zip(input.into_iter()) {
let (name, value) = match input_model { let (name, value) = match input_model {
InputVariable::InputKeyword(identifier) => { InputVariable::InputKeyword(identifier) => {
let input_value = self.enforce_function_input( let input_value = self.enforce_function_input(

View File

@ -30,11 +30,10 @@ fn parse_import_file(entry: &DirEntry, span: &Span) -> Result<Program, ImportErr
.map_err(|error| ImportError::directory_error(error, span.clone(), entry.path()))?; .map_err(|error| ImportError::directory_error(error, span.clone(), entry.path()))?;
let file_name = entry let file_name = entry
.file_name() .file_name()
.to_os_string()
.into_string() .into_string()
.map_err(|_| ImportError::convert_os_string(span.clone()))?; .map_err(|_| ImportError::convert_os_string(span.clone()))?;
let mut file_path = entry.path().to_path_buf(); let mut file_path = entry.path();
if file_type.is_dir() { if file_type.is_dir() {
file_path.push(LIBRARY_FILE); file_path.push(LIBRARY_FILE);
@ -62,7 +61,7 @@ impl ImportParser {
.extension() .extension()
.map_or(false, |ext| ext.eq(&OsString::from(FILE_EXTENSION))); .map_or(false, |ext| ext.eq(&OsString::from(FILE_EXTENSION)));
let mut package_path = path.to_path_buf(); let mut package_path = path;
package_path.push(LIBRARY_FILE); package_path.push(LIBRARY_FILE);
let is_package = is_dir && package_path.exists(); let is_package = is_dir && package_path.exists();
@ -93,7 +92,7 @@ impl ImportParser {
Ok(()) Ok(())
} else { } else {
// importing * from a directory or non-leo file in `package/src/` is illegal // importing * from a directory or non-leo file in `package/src/` is illegal
Err(ImportError::star(entry.path().to_path_buf(), span.clone())) Err(ImportError::star(entry.path(), span.clone()))
} }
} }

View File

@ -33,7 +33,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
.find(|package| import.package.eq(package)); .find(|package| import.package.eq(package));
if let Some(package) = core_dependency { if let Some(package) = core_dependency {
self.store_core_package(scope.clone(), package.clone())?; self.store_core_package(scope, package.clone())?;
return Ok(()); return Ok(());
} }

View File

@ -59,7 +59,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let value = match matched_circuit { let value = match matched_circuit {
Some((_circuit_name, circuit)) => ConstrainedValue::Import( Some((_circuit_name, circuit)) => ConstrainedValue::Import(
program_name.clone(), program_name,
Box::new(ConstrainedValue::CircuitDefinition(circuit.clone())), Box::new(ConstrainedValue::CircuitDefinition(circuit.clone())),
), ),
None => { None => {
@ -71,7 +71,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
match matched_function { match matched_function {
Some((_function_name, function)) => ConstrainedValue::Import( Some((_function_name, function)) => ConstrainedValue::Import(
program_name.clone(), program_name,
Box::new(ConstrainedValue::Function(None, function.clone())), Box::new(ConstrainedValue::Function(None, function.clone())),
), ),
None => return Err(ImportError::unknown_symbol(symbol.to_owned(), program_name)), None => return Err(ImportError::unknown_symbol(symbol.to_owned(), program_name)),

View File

@ -44,7 +44,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
// Resolve index so we know if we are assigning to a single value or a range of values // Resolve index so we know if we are assigning to a single value or a range of values
match range_or_expression { match range_or_expression {
RangeOrExpression::Expression(index) => { RangeOrExpression::Expression(index) => {
let index = self.enforce_index(cs, file_scope.clone(), function_scope.clone(), index, span.clone())?; let index = self.enforce_index(cs, file_scope, function_scope, index, span.clone())?;
// Modify the single value of the array in place // Modify the single value of the array in place
match self.get_mutable_assignee(name, span.clone())? { match self.get_mutable_assignee(name, span.clone())? {
@ -77,8 +77,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let to_index_option = match to { let to_index_option = match to {
Some(integer) => Some(self.enforce_index( Some(integer) => Some(self.enforce_index(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
integer, integer,
span.clone(), span.clone(),
)?), )?),

View File

@ -57,7 +57,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
match assignee { match assignee {
Assignee::Identifier(_identifier) => { Assignee::Identifier(_identifier) => {
let condition = indicator.unwrap_or(Boolean::Constant(true)); let condition = indicator.unwrap_or(Boolean::Constant(true));
let old_value = self.get_mutable_assignee(variable_name.clone(), span.clone())?; let old_value = self.get_mutable_assignee(variable_name, span.clone())?;
new_value.resolve_type(Some(old_value.to_type(span.clone())?), span.clone())?; new_value.resolve_type(Some(old_value.to_type(span.clone())?), span.clone())?;

View File

@ -81,7 +81,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
member.1 = selected_value.to_owned(); member.1 = selected_value.to_owned();
Ok(selected_value.to_owned()) Ok(selected_value)
} }
_ => { _ => {
// Throw an error if we try to mutate an immutable circuit variable // Throw an error if we try to mutate an immutable circuit variable

View File

@ -41,7 +41,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
cs, cs,
file_scope.clone(), file_scope.clone(),
function_scope.clone(), function_scope.clone(),
indicator.clone(), indicator,
statement.clone(), statement.clone(),
return_type.clone(), return_type.clone(),
"".to_owned(), "".to_owned(),

View File

@ -56,7 +56,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
) -> Result<Vec<ConstrainedValue<F, G>>, StatementError> { ) -> Result<Vec<ConstrainedValue<F, G>>, StatementError> {
let types = match type_ { let types = match type_ {
Some(Type::Tuple(types)) => types, Some(Type::Tuple(types)) => types,
Some(type_) => return Err(StatementError::tuple_type(type_.to_string(), span.clone())), Some(type_) => return Err(StatementError::tuple_type(type_.to_string(), span)),
None => vec![], None => vec![],
}; };
@ -157,7 +157,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let variable = variables.names[0].clone(); let variable = variables.names[0].clone();
let expression = self.enforce_expression( let expression = self.enforce_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope.clone(),
variables.type_, variables.type_,
expressions[0].clone(), expressions[0].clone(),
@ -181,14 +181,14 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let values = match self.enforce_expression( let values = match self.enforce_expression(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope.clone(),
variables.type_.clone(), variables.type_.clone(),
expressions[0].clone(), expressions[0].clone(),
)? { )? {
// ConstrainedValue::Return(values) => values, // ConstrainedValue::Return(values) => values,
ConstrainedValue::Tuple(values) => values, ConstrainedValue::Tuple(values) => values,
value => return Err(StatementError::multiple_definition(value.to_string(), span.clone())), value => return Err(StatementError::multiple_definition(value.to_string(), span)),
}; };
self.enforce_multiple_definition(cs, function_scope, is_constant, variables, values, span) self.enforce_multiple_definition(cs, function_scope, is_constant, variables, values, span)

View File

@ -56,8 +56,8 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedProgram<F, G> {
let result = self.enforce_operand( let result = self.enforce_operand(
cs, cs,
file_scope.clone(), file_scope,
function_scope.clone(), function_scope,
return_type.clone(), return_type.clone(),
expression, expression,
span.clone(), span.clone(),

View File

@ -205,7 +205,7 @@ impl EdwardsGroupType {
// Sign inferred // Sign inferred
None => { None => {
// Attempt to recover with a sign_low bit. // Attempt to recover with a sign_low bit.
if let Some(element) = EdwardsAffine::from_x_coordinate(x.clone(), false) { if let Some(element) = EdwardsAffine::from_x_coordinate(x, false) {
return Ok(element); return Ok(element);
} }
@ -234,7 +234,7 @@ impl EdwardsGroupType {
// Sign inferred // Sign inferred
None => { None => {
// Attempt to recover with a sign_low bit. // Attempt to recover with a sign_low bit.
if let Some(element) = EdwardsAffine::from_y_coordinate(y.clone(), false) { if let Some(element) = EdwardsAffine::from_y_coordinate(y, false) {
return Ok(element); return Ok(element);
} }

View File

@ -110,7 +110,7 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedValue<F, G> {
// Data type wrappers // Data type wrappers
ConstrainedValue::Array(array) => { ConstrainedValue::Array(array) => {
let array_type = array[0].to_type(span.clone())?; let array_type = array[0].to_type(span)?;
let mut dimensions = vec![array.len()]; let mut dimensions = vec![array.len()];
// Nested array type // Nested array type
@ -205,12 +205,12 @@ impl<F: Field + PrimeField, G: GroupType<F>> ConstrainedValue<F, G> {
// If this is a circuit function, evaluate inside the circuit scope // If this is a circuit function, evaluate inside the circuit scope
if let Some(identifier) = circuit_identifier { if let Some(identifier) = circuit_identifier {
// avoid creating recursive scope // avoid creating recursive scope
if !is_in_scope(&scope, &identifier.name.to_string()) { if !is_in_scope(&scope, &identifier.name) {
outer_scope = new_scope(scope, identifier.name.to_string()); outer_scope = new_scope(scope, identifier.name);
} }
} }
Ok((outer_scope, function.clone())) Ok((outer_scope, function))
} }
ConstrainedValue::Import(import_scope, function) => function.extract_function(import_scope, span), ConstrainedValue::Import(import_scope, function) => function.extract_function(import_scope, span),
value => Err(ExpressionError::undefined_function(value.to_string(), span)), value => Err(ExpressionError::undefined_function(value.to_string(), span)),

View File

@ -104,7 +104,7 @@ impl CoreCircuit for Blake2sCircuit {
), ),
span.clone(), span.clone(),
)], )],
span: span.clone(), span,
}, },
)], )],
} }

View File

@ -30,7 +30,7 @@ impl SignExtend for Boolean {
fn sign_extend(bits: &[Boolean], length: usize) -> Vec<Boolean> { fn sign_extend(bits: &[Boolean], length: usize) -> Vec<Boolean> {
let msb = bits.last().expect("empty bit list"); let msb = bits.last().expect("empty bit list");
let bits_needed = length - bits.len(); let bits_needed = length - bits.len();
let mut extension = vec![msb.clone(); bits_needed]; let mut extension = vec![*msb; bits_needed];
let mut result = Vec::from(bits); let mut result = Vec::from(bits);
result.append(&mut extension); result.append(&mut extension);

View File

@ -93,7 +93,7 @@ impl CLI for BuildCommand {
// Compile the library file but do not output // Compile the library file but do not output
let _program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input( let _program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input(
package_name.clone(), package_name.clone(),
lib_file_path.clone(), lib_file_path,
output_directory.clone(), output_directory.clone(),
)?; )?;
tracing::info!("Complete"); tracing::info!("Complete");
@ -121,7 +121,7 @@ impl CLI for BuildCommand {
// Load the program at `main_file_path` // Load the program at `main_file_path`
let program = Compiler::<Fq, EdwardsGroupType>::parse_program_with_input( let program = Compiler::<Fq, EdwardsGroupType>::parse_program_with_input(
package_name.clone(), package_name.clone(),
main_file_path.clone(), main_file_path,
output_directory, output_directory,
&input_string, &input_string,
input_path, input_path,

View File

@ -65,7 +65,7 @@ impl CLI for DeployCommand {
Ok(()) Ok(())
} }
None => { None => {
let mut main_file_path = path.clone(); let mut main_file_path = path;
main_file_path.push(SOURCE_DIRECTORY_NAME); main_file_path.push(SOURCE_DIRECTORY_NAME);
main_file_path.push(MAIN_FILENAME); main_file_path.push(MAIN_FILENAME);

View File

@ -65,7 +65,7 @@ impl CLI for LintCommand {
Ok(()) Ok(())
} }
None => { None => {
let mut main_file_path = path.clone(); let mut main_file_path = path;
main_file_path.push(SOURCE_DIRECTORY_NAME); main_file_path.push(SOURCE_DIRECTORY_NAME);
main_file_path.push(MAIN_FILENAME); main_file_path.push(MAIN_FILENAME);

View File

@ -146,7 +146,7 @@ impl CLI for SetupCommand {
Ok((program, proving_key, prepared_verifying_key)) Ok((program, proving_key, prepared_verifying_key))
} }
None => { None => {
let mut main_file_path = path.clone(); let mut main_file_path = path;
main_file_path.push(SOURCE_DIRECTORY_NAME); main_file_path.push(SOURCE_DIRECTORY_NAME);
main_file_path.push(MAIN_FILENAME); main_file_path.push(MAIN_FILENAME);

View File

@ -60,7 +60,7 @@ impl CLI for TestCommand {
let package_name = manifest.get_package_name(); let package_name = manifest.get_package_name();
// Sanitize the package path to the root directory // Sanitize the package path to the root directory
let mut package_path = path.clone(); let mut package_path = path;
if package_path.is_file() { if package_path.is_file() {
package_path.pop(); package_path.pop();
} }
@ -93,8 +93,8 @@ impl CLI for TestCommand {
// Parse the current main program file // Parse the current main program file
let program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input( let program = Compiler::<Fq, EdwardsGroupType>::parse_program_without_input(
package_name.clone(), package_name,
file_path.clone(), file_path,
output_directory, output_directory,
)?; )?;
@ -102,7 +102,7 @@ impl CLI for TestCommand {
let pairs = InputPairs::try_from(&package_path)?; let pairs = InputPairs::try_from(&package_path)?;
// Run tests // Run tests
let temporary_program = program.clone(); let temporary_program = program;
let (passed, failed) = temporary_program.compile_test_constraints(pairs)?; let (passed, failed) = temporary_program.compile_test_constraints(pairs)?;
// Drop "Test" context for console logging // Drop "Test" context for console logging

View File

@ -131,7 +131,7 @@ pub fn write_token(token: &str) -> Result<(), io::Error> {
let config_dir = LEO_CONFIG_DIRECTORY.clone(); let config_dir = LEO_CONFIG_DIRECTORY.clone();
// Create Leo config directory if it not exists // Create Leo config directory if it not exists
if !Path::new(&config_dir.to_path_buf()).exists() { if !Path::new(&config_dir).exists() {
create_dir_all(&config_dir)?; create_dir_all(&config_dir)?;
} }

View File

@ -36,8 +36,8 @@ impl From<Index> for SerializedIndex {
impl From<&SerializedIndex> for Index { impl From<&SerializedIndex> for Index {
fn from(serialized_index: &SerializedIndex) -> Self { fn from(serialized_index: &SerializedIndex) -> Self {
match serialized_index { match serialized_index {
SerializedIndex::Input(idx) => Index::Input(idx.clone()), SerializedIndex::Input(idx) => Index::Input(*idx),
SerializedIndex::Aux(idx) => Index::Aux(idx.clone()), SerializedIndex::Aux(idx) => Index::Aux(*idx),
} }
} }
} }