mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +00:00
Fix load_builtin_aliases ordering
This commit is contained in:
parent
f31e260e2f
commit
4295dec955
9 changed files with 38 additions and 34 deletions
|
@ -467,7 +467,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -546,8 +546,7 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> Result<Can
|
|||
// }
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -114,15 +114,13 @@ pub fn constrain_imported_values(
|
|||
)
|
||||
}
|
||||
|
||||
pub fn load_builtin_aliases(
|
||||
aliases: &MutMap<Symbol, BuiltinAlias>,
|
||||
body_con: Constraint,
|
||||
var_store: &VarStore,
|
||||
) -> Constraint {
|
||||
pub fn load_builtin_aliases<I>(aliases: I, body_con: Constraint, var_store: &VarStore) -> Constraint
|
||||
where
|
||||
I: IntoIterator<Item = (Symbol, BuiltinAlias)>,
|
||||
{
|
||||
use Constraint::*;
|
||||
|
||||
// Load all builtin aliases.
|
||||
// TODO load only the ones actually used in this module
|
||||
// Load all the given builtin aliases.
|
||||
let mut def_aliases = SendMap::default();
|
||||
|
||||
for (symbol, builtin_alias) in aliases {
|
||||
|
@ -154,7 +152,7 @@ pub fn load_builtin_aliases(
|
|||
typ: actual,
|
||||
};
|
||||
|
||||
def_aliases.insert(*symbol, alias);
|
||||
def_aliases.insert(symbol, alias);
|
||||
}
|
||||
|
||||
Let(Box::new(LetConstraint {
|
||||
|
|
|
@ -184,7 +184,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -292,8 +292,7 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> CanExprOut
|
|||
// }
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ use roc_region::all::{Located, Region};
|
|||
use roc_solve::solve;
|
||||
use roc_solve::module::SolvedModule;
|
||||
use roc_types::types;
|
||||
use roc_types::solved_types::{Solved, SolvedType};
|
||||
use roc_types::solved_types::{Solved, SolvedType, BuiltinAlias};
|
||||
use roc_types::subs::{Subs, VarStore, Variable};
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::fs::read_to_string;
|
||||
|
@ -883,22 +883,24 @@ fn spawn_solve_module(
|
|||
}
|
||||
}
|
||||
|
||||
let constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
|
||||
|
||||
for unused_import in unused_imports {
|
||||
todo!("TODO gracefully handle unused import {:?} from module {:?}", unused_import, home);
|
||||
}
|
||||
|
||||
// TODO include only the aliases actually used in this module
|
||||
let aliases = stdlib.aliases.iter().map(|(symbol, alias)| {
|
||||
(*symbol, alias.clone())
|
||||
}).collect::<Vec<(Symbol, BuiltinAlias)>>();
|
||||
|
||||
// Start solving this module in the background.
|
||||
spawn_blocking(move || {
|
||||
// Finish constraining the module by wrapping the existing Constraint
|
||||
// in the ones we just computed. We can do this off the main thread.
|
||||
|
||||
// TODO what to do with the introduced rigids?
|
||||
let (_introduced_rigids, constraint) =
|
||||
constrain_imported_values(imported_symbols, constraint, &var_store);
|
||||
let mut constraint = constrain_imported_aliases(imported_aliases, constraint, &var_store);
|
||||
let constraint = constrain_imported_aliases(imported_aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(aliases, constraint, &var_store);
|
||||
|
||||
// Turn Apply into Alias
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
|
|
@ -19,6 +19,7 @@ use roc_parse::parser::{loc, Fail, Parser, State};
|
|||
use roc_problem::can::Problem;
|
||||
use roc_region::all::{Located, Region};
|
||||
use roc_solve::solve;
|
||||
use roc_types::solved_types::BuiltinAlias;
|
||||
use roc_types::subs::{Content, Subs, VarStore, Variable};
|
||||
use roc_types::types::Type;
|
||||
use std::hash::Hash;
|
||||
|
@ -178,7 +179,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -258,9 +259,14 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> CanExprOut
|
|||
let (_introduced_rigids, constraint) =
|
||||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// TODO include only the aliases actually used in this module
|
||||
let aliases = roc_builtins::std::aliases()
|
||||
.iter()
|
||||
.map(|(symbol, alias)| (*symbol, alias.clone()))
|
||||
.collect::<Vec<(Symbol, BuiltinAlias)>>();
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(aliases.into_iter(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -242,8 +242,7 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> CanExprOut
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -195,8 +195,7 @@ pub fn can_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -182,7 +182,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -263,8 +263,11 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> CanExprOut
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(
|
||||
roc_builtins::std::aliases().into_iter(),
|
||||
constraint,
|
||||
&var_store,
|
||||
);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
|
@ -182,7 +182,7 @@ pub fn uniq_expr_with(
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
// load builtin types
|
||||
let mut constraint = load_builtin_aliases(&stdlib.aliases, constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(stdlib.aliases, constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
@ -263,8 +263,7 @@ pub fn can_expr_with(arena: &Bump, home: ModuleId, expr_str: &str) -> CanExprOut
|
|||
constrain_imported_values(imports, constraint, &var_store);
|
||||
|
||||
//load builtin types
|
||||
let mut constraint =
|
||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
||||
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||
|
||||
constraint.instantiate_aliases(&var_store);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue