fix some unnecessary lambdas in assign
This commit is contained in:
parent
03dd13dc7d
commit
f03ed41e03
|
@ -687,22 +687,21 @@ impl<'a> CodeGenerator<'a> {
|
||||||
|
|
||||||
let val = AirTree::local_var(name, tipo.clone());
|
let val = AirTree::local_var(name, tipo.clone());
|
||||||
|
|
||||||
if tipo.is_primitive() {
|
if non_opaque_tipo.is_primitive() {
|
||||||
AirTree::let_assignment(name, assignment.hoist_over(val))
|
assignment
|
||||||
} else {
|
} else {
|
||||||
let expect = self.expect_type_assign(
|
let expect = self.expect_type_assign(
|
||||||
&non_opaque_tipo,
|
&non_opaque_tipo,
|
||||||
val.clone(),
|
val,
|
||||||
&mut index_map,
|
&mut index_map,
|
||||||
pattern.location(),
|
pattern.location(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let assign_expect = AirTree::let_assignment("_", expect);
|
let assign_expect = AirTree::let_assignment("_", expect);
|
||||||
|
|
||||||
AirTree::let_assignment(
|
let sequence = vec![assignment, assign_expect];
|
||||||
name,
|
|
||||||
assignment.hoist_over(assign_expect.hoist_over(val)),
|
AirTree::UnhoistedSequence(sequence)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
AirTree::let_assignment(name, value)
|
AirTree::let_assignment(name, value)
|
||||||
|
@ -721,28 +720,27 @@ impl<'a> CodeGenerator<'a> {
|
||||||
let name = &format!("__discard_expect_{}", name);
|
let name = &format!("__discard_expect_{}", name);
|
||||||
let mut index_map = IndexMap::new();
|
let mut index_map = IndexMap::new();
|
||||||
|
|
||||||
let tipo = convert_opaque_type(tipo, &self.data_types);
|
let non_opaque_tipo = convert_opaque_type(tipo, &self.data_types);
|
||||||
|
|
||||||
let assignment = AirTree::let_assignment(name, value);
|
let assignment = AirTree::let_assignment(name, value);
|
||||||
|
|
||||||
let val = AirTree::local_var(name, tipo.clone());
|
let val = AirTree::local_var(name, tipo.clone());
|
||||||
|
|
||||||
if tipo.is_primitive() {
|
if non_opaque_tipo.is_primitive() {
|
||||||
AirTree::let_assignment(name, assignment.hoist_over(val))
|
assignment.hoist_over(val)
|
||||||
} else {
|
} else {
|
||||||
let expect = self.expect_type_assign(
|
let expect = self.expect_type_assign(
|
||||||
&tipo,
|
&non_opaque_tipo,
|
||||||
val.clone(),
|
val,
|
||||||
&mut index_map,
|
&mut index_map,
|
||||||
pattern.location(),
|
pattern.location(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let assign_expect = AirTree::let_assignment("_", expect);
|
let assign_expect = AirTree::let_assignment("_", expect);
|
||||||
|
|
||||||
AirTree::let_assignment(
|
let sequence = vec![assignment, assign_expect];
|
||||||
name,
|
|
||||||
assignment.hoist_over(assign_expect.hoist_over(val)),
|
AirTree::UnhoistedSequence(sequence)
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else if !props.remove_unused {
|
} else if !props.remove_unused {
|
||||||
AirTree::let_assignment(name, value)
|
AirTree::let_assignment(name, value)
|
||||||
|
|
|
@ -73,7 +73,6 @@ fn assert_uplc(source_code: &str, expected: Term<Name>, should_fail: bool) {
|
||||||
};
|
};
|
||||||
|
|
||||||
let expected = optimize::aiken_optimize_and_intern(expected);
|
let expected = optimize::aiken_optimize_and_intern(expected);
|
||||||
|
|
||||||
// println!("expected: {}", expected.to_pretty());
|
// println!("expected: {}", expected.to_pretty());
|
||||||
|
|
||||||
let expected: Program<DeBruijn> = expected.try_into().unwrap();
|
let expected: Program<DeBruijn> = expected.try_into().unwrap();
|
||||||
|
@ -103,7 +102,6 @@ fn assert_uplc(source_code: &str, expected: Term<Name>, should_fail: bool) {
|
||||||
term: expected,
|
term: expected,
|
||||||
};
|
};
|
||||||
|
|
||||||
println!("expected: {}", expected.to_pretty());
|
|
||||||
|
|
||||||
let expected = optimize::aiken_optimize_and_intern(expected);
|
let expected = optimize::aiken_optimize_and_intern(expected);
|
||||||
|
|
||||||
|
@ -4212,10 +4210,7 @@ fn expect_head_cast_data_with_tail() {
|
||||||
)
|
)
|
||||||
.apply(Term::var("tail_2"))
|
.apply(Term::var("tail_2"))
|
||||||
.apply(
|
.apply(
|
||||||
Term::unit()
|
Term::un_i_data().apply(Term::var("list_item")).lambda("list_item")
|
||||||
.lambda("_")
|
|
||||||
.apply(Term::un_i_data().apply(Term::var("list_item")))
|
|
||||||
.lambda("list_item"),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.lambda("tail_2")
|
.lambda("tail_2")
|
||||||
|
|
Loading…
Reference in New Issue