diff --git a/hercules_ir/src/typecheck.rs b/hercules_ir/src/typecheck.rs index 4475dbba2a945db891fe9282fe852a5ff1947e6f..c3ae21e6dfc61a956b42816510bc135281b52710 100644 --- a/hercules_ir/src/typecheck.rs +++ b/hercules_ir/src/typecheck.rs @@ -688,26 +688,19 @@ fn typeflow( return Error(String::from("Ternary node must have exactly three inputs.")); } - if let Concrete(id) = inputs[0] { - match op { - TernaryOperator::Select => { + match op { + TernaryOperator::Select => { + if let Concrete(id) = inputs[0] { if !types[id.idx()].is_bool() { return Error(String::from( "Select ternary node input cannot have non-bool condition input.", )); } - - let data_ty = TypeSemilattice::meet(inputs[1], inputs[2]); - if let Concrete(data_id) = data_ty { - return Concrete(data_id); - } else { - return data_ty; - } } + + TypeSemilattice::meet(inputs[1], inputs[2]) } } - - Error(String::from("Unhandled ternary types.")) } Node::Call { control: _,