mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-22 00:09:33 +03:00
remove aliases from solve Env
This commit is contained in:
parent
c18befeccf
commit
751ae125a5
@ -3107,8 +3107,7 @@ fn run_solve<'a>(
|
||||
let mut exposed_vars_by_symbol: MutMap<Symbol, Variable> = solved_env.vars_by_symbol.clone();
|
||||
exposed_vars_by_symbol.retain(|k, _| exposed_symbols.contains(k));
|
||||
|
||||
let solved_types =
|
||||
roc_solve::module::make_solved_types(&solved_env, &solved_subs, &exposed_vars_by_symbol);
|
||||
let solved_types = roc_solve::module::make_solved_types(&solved_subs, &exposed_vars_by_symbol);
|
||||
|
||||
let solved_module = SolvedModule {
|
||||
exposed_vars_by_symbol,
|
||||
|
@ -23,7 +23,6 @@ pub fn run_solve(
|
||||
) -> (Solved<Subs>, solve::Env, Vec<solve::TypeError>) {
|
||||
let env = solve::Env {
|
||||
vars_by_symbol: MutMap::default(),
|
||||
aliases: MutMap::default(),
|
||||
};
|
||||
|
||||
let mut subs = Subs::new_from_varstore(var_store);
|
||||
@ -43,40 +42,11 @@ pub fn run_solve(
|
||||
}
|
||||
|
||||
pub fn make_solved_types(
|
||||
solved_env: &solve::Env,
|
||||
solved_subs: &Solved<Subs>,
|
||||
exposed_vars_by_symbol: &MutMap<Symbol, Variable>,
|
||||
) -> MutMap<Symbol, SolvedType> {
|
||||
let mut solved_types = MutMap::default();
|
||||
|
||||
for (symbol, alias) in solved_env.aliases.iter() {
|
||||
let mut args = Vec::with_capacity(alias.type_variables.len());
|
||||
|
||||
for loc_named_var in alias.type_variables.iter() {
|
||||
let (name, var) = &loc_named_var.value;
|
||||
|
||||
args.push((name.clone(), SolvedType::new(solved_subs, *var)));
|
||||
}
|
||||
|
||||
let mut lambda_set_variables = Vec::with_capacity(alias.lambda_set_variables.len());
|
||||
for set in alias.lambda_set_variables.iter() {
|
||||
lambda_set_variables.push(roc_types::solved_types::SolvedLambdaSet(
|
||||
SolvedType::from_type(solved_subs, &set.0),
|
||||
));
|
||||
}
|
||||
|
||||
let solved_type = SolvedType::from_type(solved_subs, &alias.typ);
|
||||
let solved_alias = SolvedType::Alias(
|
||||
*symbol,
|
||||
args,
|
||||
lambda_set_variables,
|
||||
Box::new(solved_type),
|
||||
alias.kind,
|
||||
);
|
||||
|
||||
solved_types.insert(*symbol, solved_alias);
|
||||
}
|
||||
|
||||
// exposed_vars_by_symbol contains the Variables for all the Symbols
|
||||
// this module exposes. We want to convert those into flat SolvedType
|
||||
// annotations which are decoupled from our Subs, because that's how
|
||||
|
@ -12,7 +12,7 @@ use roc_types::subs::{
|
||||
};
|
||||
use roc_types::types::Type::{self, *};
|
||||
use roc_types::types::{
|
||||
gather_fields_unsorted_iter, Alias, AliasKind, Category, ErrorType, PatternCategory,
|
||||
gather_fields_unsorted_iter, AliasKind, Category, ErrorType, PatternCategory,
|
||||
};
|
||||
use roc_unify::unify::{unify, Mode, Unified::*};
|
||||
use std::collections::hash_map::Entry;
|
||||
@ -79,7 +79,6 @@ pub enum TypeError {
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct Env {
|
||||
pub vars_by_symbol: MutMap<Symbol, Variable>,
|
||||
pub aliases: MutMap<Symbol, Alias>,
|
||||
}
|
||||
|
||||
impl Env {
|
||||
|
Loading…
Reference in New Issue
Block a user