From e86cc2202462f1bf107c450a2ba1683c945f2d2e Mon Sep 17 00:00:00 2001 From: Folkert Date: Thu, 12 Aug 2021 19:35:33 +0200 Subject: [PATCH] add empty variable slice at index 0 --- compiler/types/src/subs.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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, }