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);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -114,15 +114,13 @@ pub fn constrain_imported_values(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_builtin_aliases(
|
pub fn load_builtin_aliases<I>(aliases: I, body_con: Constraint, var_store: &VarStore) -> Constraint
|
||||||
aliases: &MutMap<Symbol, BuiltinAlias>,
|
where
|
||||||
body_con: Constraint,
|
I: IntoIterator<Item = (Symbol, BuiltinAlias)>,
|
||||||
var_store: &VarStore,
|
{
|
||||||
) -> Constraint {
|
|
||||||
use Constraint::*;
|
use Constraint::*;
|
||||||
|
|
||||||
// Load all builtin aliases.
|
// Load all the given builtin aliases.
|
||||||
// TODO load only the ones actually used in this module
|
|
||||||
let mut def_aliases = SendMap::default();
|
let mut def_aliases = SendMap::default();
|
||||||
|
|
||||||
for (symbol, builtin_alias) in aliases {
|
for (symbol, builtin_alias) in aliases {
|
||||||
|
@ -154,7 +152,7 @@ pub fn load_builtin_aliases(
|
||||||
typ: actual,
|
typ: actual,
|
||||||
};
|
};
|
||||||
|
|
||||||
def_aliases.insert(*symbol, alias);
|
def_aliases.insert(symbol, alias);
|
||||||
}
|
}
|
||||||
|
|
||||||
Let(Box::new(LetConstraint {
|
Let(Box::new(LetConstraint {
|
||||||
|
|
|
@ -184,7 +184,7 @@ pub fn uniq_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ use roc_region::all::{Located, Region};
|
||||||
use roc_solve::solve;
|
use roc_solve::solve;
|
||||||
use roc_solve::module::SolvedModule;
|
use roc_solve::module::SolvedModule;
|
||||||
use roc_types::types;
|
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 roc_types::subs::{Subs, VarStore, Variable};
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::fs::read_to_string;
|
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 {
|
for unused_import in unused_imports {
|
||||||
todo!("TODO gracefully handle unused import {:?} from module {:?}", unused_import, home);
|
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.
|
// Start solving this module in the background.
|
||||||
spawn_blocking(move || {
|
spawn_blocking(move || {
|
||||||
// Finish constraining the module by wrapping the existing Constraint
|
// Finish constraining the module by wrapping the existing Constraint
|
||||||
// in the ones we just computed. We can do this off the main thread.
|
// in the ones we just computed. We can do this off the main thread.
|
||||||
|
|
||||||
// TODO what to do with the introduced rigids?
|
// TODO what to do with the introduced rigids?
|
||||||
let (_introduced_rigids, constraint) =
|
let (_introduced_rigids, constraint) =
|
||||||
constrain_imported_values(imported_symbols, constraint, &var_store);
|
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
|
// Turn Apply into Alias
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
|
@ -19,6 +19,7 @@ use roc_parse::parser::{loc, Fail, Parser, State};
|
||||||
use roc_problem::can::Problem;
|
use roc_problem::can::Problem;
|
||||||
use roc_region::all::{Located, Region};
|
use roc_region::all::{Located, Region};
|
||||||
use roc_solve::solve;
|
use roc_solve::solve;
|
||||||
|
use roc_types::solved_types::BuiltinAlias;
|
||||||
use roc_types::subs::{Content, Subs, VarStore, Variable};
|
use roc_types::subs::{Content, Subs, VarStore, Variable};
|
||||||
use roc_types::types::Type;
|
use roc_types::types::Type;
|
||||||
use std::hash::Hash;
|
use std::hash::Hash;
|
||||||
|
@ -178,7 +179,7 @@ pub fn uniq_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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) =
|
let (_introduced_rigids, constraint) =
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
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
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(aliases.into_iter(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@ pub fn uniq_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
//load builtin types
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -195,8 +195,7 @@ pub fn can_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
//load builtin types
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ pub fn uniq_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
//load builtin types
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
roc_builtins::std::aliases().into_iter(),
|
||||||
|
constraint,
|
||||||
|
&var_store,
|
||||||
|
);
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
|
@ -182,7 +182,7 @@ pub fn uniq_expr_with(
|
||||||
constrain_imported_values(imports, constraint, &var_store);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
// load builtin types
|
// 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);
|
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);
|
constrain_imported_values(imports, constraint, &var_store);
|
||||||
|
|
||||||
//load builtin types
|
//load builtin types
|
||||||
let mut constraint =
|
let mut constraint = load_builtin_aliases(roc_builtins::std::aliases(), constraint, &var_store);
|
||||||
load_builtin_aliases(&roc_builtins::std::aliases(), constraint, &var_store);
|
|
||||||
|
|
||||||
constraint.instantiate_aliases(&var_store);
|
constraint.instantiate_aliases(&var_store);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue