feat: handle single constr when with multiple branches
Add case to acceptance test 40 Add special case for top level single constr in a when.
This commit is contained in:
@@ -756,12 +756,29 @@ impl<'a> CodeGenerator<'a> {
|
||||
scope.clone(),
|
||||
);
|
||||
|
||||
ir_stack.push(Air::Clause {
|
||||
scope,
|
||||
tipo: subject_type.clone(),
|
||||
complex_clause: *clause_properties.is_complex_clause(),
|
||||
subject_name,
|
||||
});
|
||||
let data_type =
|
||||
lookup_data_type_by_tipo(self.data_types.clone(), &subject_type).unwrap();
|
||||
|
||||
if data_type.constructors.len() > 1 {
|
||||
ir_stack.push(Air::Clause {
|
||||
scope,
|
||||
tipo: subject_type.clone(),
|
||||
complex_clause: *clause_properties.is_complex_clause(),
|
||||
subject_name,
|
||||
});
|
||||
} else {
|
||||
ir_stack.push(Air::Clause {
|
||||
scope: scope.clone(),
|
||||
tipo: subject_type.clone(),
|
||||
complex_clause: *clause_properties.is_complex_clause(),
|
||||
subject_name,
|
||||
});
|
||||
|
||||
ir_stack.push(Air::Int {
|
||||
scope,
|
||||
value: "0".to_string(),
|
||||
});
|
||||
}
|
||||
}
|
||||
ClauseProperties::ListClause {
|
||||
original_subject_name,
|
||||
|
||||
Reference in New Issue
Block a user