diff --git a/compiler/types/src/subs.rs b/compiler/types/src/subs.rs index edd8223c24..9193c17e47 100644 --- a/compiler/types/src/subs.rs +++ b/compiler/types/src/subs.rs @@ -931,9 +931,21 @@ pub struct UnionTags { } impl UnionTags { - pub fn insert_into_subs<'a, I>(subs: &mut Subs, input: I) -> Self + pub fn len(&self) -> usize { + self.tag_names.len() + } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + pub fn compare(x: &(TagName, T), y: &(TagName, T)) -> std::cmp::Ordering { + first(x, y) + } + pub fn insert_into_subs(subs: &mut Subs, input: I) -> Self where - I: IntoIterator, + I: IntoIterator, + I2: IntoIterator, { let tag_names_start = subs.tag_names.len() as u32; let variables_start = subs.variable_slices.len() as u32; @@ -946,7 +958,7 @@ impl UnionTags { let mut length = 0; for (k, v) in it { - let variables = VariableSubsSlice::insert_into_subs(subs, v.iter().copied()); + let variables = VariableSubsSlice::insert_into_subs(subs, v.into_iter()); subs.tag_names.push(k); subs.variable_slices.push(variables);