diff --git a/compiler/types/src/subs.rs b/compiler/types/src/subs.rs index 48512ad3d4..39ae422a24 100644 --- a/compiler/types/src/subs.rs +++ b/compiler/types/src/subs.rs @@ -49,7 +49,7 @@ struct ErrorTypeState { problems: Vec, } -#[derive(Default, Clone)] +#[derive(Clone)] pub struct Subs { utable: UnificationTable>, pub variables: Vec, @@ -59,6 +59,21 @@ pub struct Subs { pub variable_slices: Vec, } +impl Default for Subs { + fn default() -> Self { + Subs { + utable: Default::default(), + variables: Default::default(), + tag_names: Default::default(), + field_names: Default::default(), + record_fields: Default::default(), + // store an empty slice at the first position + // used for "TagOrFunction" + variable_slices: vec![VariableSubsSlice::default()], + } + } +} + /// A slice into the Vec of subs /// /// The starting position is a u32 which should be plenty @@ -883,7 +898,7 @@ pub enum Builtin { EmptyRecord, } -#[derive(Clone, Copy, Debug)] +#[derive(Clone, Copy, Debug, Default)] pub struct VariableSubsSlice { slice: SubsSlice, }