diff --git a/compiler/can/src/annotation.rs b/compiler/can/src/annotation.rs index 98ba3636f2..69a3a3d564 100644 --- a/compiler/can/src/annotation.rs +++ b/compiler/can/src/annotation.rs @@ -1,6 +1,6 @@ use crate::env::Env; use crate::scope::Scope; -use roc_collections::all::{ImMap, MutSet, SendMap}; +use roc_collections::all::{ImMap, MutMap, MutSet, SendMap}; use roc_module::ident::{Ident, Lowercase, TagName}; use roc_module::symbol::Symbol; use roc_parse::ast::{AssignedField, Tag, TypeAnnotation}; @@ -58,6 +58,12 @@ impl IntroducedVariables { } } +#[derive(Debug, Default)] +pub struct VariablySizedTypes { + rigids: MutMap, + aliases: MutMap, +} + pub fn canonicalize_annotation( env: &mut Env, scope: &mut Scope, diff --git a/compiler/load/src/file.rs b/compiler/load/src/file.rs index 68ed8b7eaa..283127a09a 100644 --- a/compiler/load/src/file.rs +++ b/compiler/load/src/file.rs @@ -5,6 +5,7 @@ use crossbeam::deque::{Injector, Stealer, Worker}; use crossbeam::thread; use parking_lot::Mutex; use roc_builtins::std::{Mode, StdLib}; +use roc_can::annotation::VariablySizedTypes; use roc_can::constraint::Constraint; use roc_can::def::Declaration; use roc_can::module::{canonicalize_module_defs, Module}; @@ -210,6 +211,7 @@ struct ModuleCache<'a> { found_specializations: MutMap>, external_specializations_requested: MutMap, documentation: MutMap, + host_exposed_variably_sized_types: MutMap, } fn start_phase<'a>(module_id: ModuleId, phase: Phase, state: &mut State<'a>) -> BuildTask<'a> {