1
0
Fork 0
mirror of synced 2025-09-24 04:40:05 +00:00

Merge pull request #74 from lubieplacki/fixed-less-than-function-call

Fixed less-than function call bug
This commit is contained in:
JacobEberhardt 2018-06-25 16:35:28 +02:00 committed by GitHub
commit ca0759fecc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -94,7 +94,7 @@ impl Flattener {
box FlatExpression::Mult(box FlatExpression::Number(T::from(2)), box FlatExpression::Identifier(rhs_name.to_string())),
),
));
for i in 0..self.bits - 2 {
for i in 0..self.bits {
let new_name = format!("{}{}{}", &subtraction_result, BINARY_SEPARATOR, i);
statements_flattened.push(FlatStatement::Definition(
new_name.to_string(),
@ -274,17 +274,17 @@ impl Flattener {
}
},
FlatStatement::Definition(var, rhs) => {
let new_rhs = rhs.apply_substitution(&replacement_map);
let new_var: String = format!("{}{}", prefix, var.clone());
replacement_map.insert(var, new_var.clone());
let new_rhs = rhs.apply_substitution(&replacement_map);
statements_flattened.push(
FlatStatement::Definition(new_var, new_rhs)
);
},
FlatStatement::Compiler(var, rhs) => {
let new_rhs = rhs.apply_substitution(&replacement_map);
let new_var: String = format!("{}{}", prefix, var.clone());
replacement_map.insert(var, new_var.clone());
let new_rhs = rhs.apply_substitution(&replacement_map);
statements_flattened.push(FlatStatement::Compiler(new_var, new_rhs));
},
FlatStatement::Condition(lhs, rhs) => {
@ -386,7 +386,7 @@ impl Flattener {
);
let new_left = if left_flattened.is_linear() {
left_flattened
} else {
} else {
let new_name = format!("sym_{}", self.next_var_idx);
self.next_var_idx += 1;
statements_flattened
@ -395,7 +395,7 @@ impl Flattener {
};
let new_right = if right_flattened.is_linear() {
right_flattened
} else {
} else {
let new_name = format!("sym_{}", self.next_var_idx);
self.next_var_idx += 1;
statements_flattened
@ -558,11 +558,11 @@ impl Flattener {
statements_flattened: &mut Vec<FlatStatement<T>>,
list: ExpressionList<T>,
) -> FlatExpressionList<T> {
let flattened_exprs = list.expressions.into_iter().map(|x|
let flattened_exprs = list.expressions.into_iter().map(|x|
self.flatten_expression(
functions_flattened,
arguments_flattened,
statements_flattened,
functions_flattened,
arguments_flattened,
statements_flattened,
x.clone())
).collect();
FlatExpressionList {
@ -586,7 +586,7 @@ impl Flattener {
statements_flattened,
exprs_subbed,
);
statements_flattened.push(FlatStatement::Return(rhs));
}
Statement::Definition(ref id, ref expr) => {
@ -806,12 +806,12 @@ mod multiple_definition {
let mut flattener = Flattener::new(FieldPrime::get_required_bits());
let mut functions_flattened = vec![
FlatFunction {
id: "foo".to_string(),
arguments: vec![],
id: "foo".to_string(),
arguments: vec![],
statements: vec![FlatStatement::Return(
FlatExpressionList {
FlatExpressionList {
expressions: vec![
FlatExpression::Number(FieldPrime::from(1)),
FlatExpression::Number(FieldPrime::from(1)),
FlatExpression::Number(FieldPrime::from(2))
]
}
@ -823,7 +823,7 @@ mod multiple_definition {
let mut statements_flattened = vec![];
let statement = Statement::MultipleDefinition(
vec![
"a".to_string(),
"a".to_string(),
"b".to_string()
],
Expression::FunctionCall("foo".to_string(), vec![])
@ -854,13 +854,13 @@ mod multiple_definition {
let mut flattener = Flattener::new(FieldPrime::get_required_bits());
let mut functions_flattened = vec![
FlatFunction {
id: "dup".to_string(),
arguments: vec![Parameter { id: "x".to_string(), private: true }],
id: "dup".to_string(),
arguments: vec![Parameter { id: "x".to_string(), private: true }],
statements: vec![FlatStatement::Return(
FlatExpressionList {
FlatExpressionList {
expressions: vec![
FlatExpression::Identifier("x".to_string()),
FlatExpression::Identifier("x".to_string()),
FlatExpression::Identifier("x".to_string()),
FlatExpression::Identifier("x".to_string()),
]
}
)],
@ -871,9 +871,9 @@ mod multiple_definition {
let mut statements_flattened = vec![];
let statement = Statement::MultipleDefinition(
vec![
"a".to_string(),
"a".to_string(),
"b".to_string()
],
],
Expression::FunctionCall("dup".to_string(), vec![Expression::Number(FieldPrime::from(2))])
);
@ -902,10 +902,10 @@ mod multiple_definition {
let mut flattener = Flattener::new(FieldPrime::get_required_bits());
let mut functions_flattened = vec![
FlatFunction {
id: "foo".to_string(),
arguments: vec![],
id: "foo".to_string(),
arguments: vec![],
statements: vec![FlatStatement::Return(
FlatExpressionList {
FlatExpressionList {
expressions: vec![
FlatExpression::Number(FieldPrime::from(1))
]
@ -917,7 +917,7 @@ mod multiple_definition {
let arguments_flattened = vec![];
let mut statements_flattened = vec![];
let statement = Statement::Definition(
"a".to_string(),
"a".to_string(),
Expression::FunctionCall("foo".to_string(), vec![])
);
@ -947,16 +947,16 @@ mod multiple_definition {
// b, c = foo()
// return 1
//
// should not panic
// should not panic
//
let mut flattener = Flattener::new(FieldPrime::get_required_bits());
let functions = vec![
Function {
id: "foo".to_string(),
arguments: vec![],
id: "foo".to_string(),
arguments: vec![],
statements: vec![Statement::Return(
ExpressionList {
ExpressionList {
expressions: vec![
Expression::Number(FieldPrime::from(1))
]
@ -965,10 +965,10 @@ mod multiple_definition {
return_count: 1,
},
Function {
id: "foo".to_string(),
arguments: vec![],
id: "foo".to_string(),
arguments: vec![],
statements: vec![Statement::Return(
ExpressionList {
ExpressionList {
expressions: vec![
Expression::Number(FieldPrime::from(1)),
Expression::Number(FieldPrime::from(2))