mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
Remove unused alias types
This commit is contained in:
parent
c225515a1b
commit
452b882f12
2 changed files with 4 additions and 143 deletions
|
@ -39,7 +39,7 @@ use roc_solve::solve;
|
||||||
use roc_target::TargetInfo;
|
use roc_target::TargetInfo;
|
||||||
use roc_types::solved_types::Solved;
|
use roc_types::solved_types::Solved;
|
||||||
use roc_types::subs::{Subs, VarStore, Variable};
|
use roc_types::subs::{Subs, VarStore, Variable};
|
||||||
use roc_types::types::{Alias, AliasCommon, AliasKind, TypeExtension};
|
use roc_types::types::{Alias, AliasKind};
|
||||||
use std::collections::hash_map::Entry::{Occupied, Vacant};
|
use std::collections::hash_map::Entry::{Occupied, Vacant};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
@ -4689,151 +4689,14 @@ fn to_missing_platform_report(module_id: ModuleId, other: PlatformPath) -> Strin
|
||||||
/// Builtin aliases that are not covered by type checker optimizations
|
/// Builtin aliases that are not covered by type checker optimizations
|
||||||
///
|
///
|
||||||
/// Types like `F64` and `I32` are hardcoded into Subs and therefore we don't define them here.
|
/// Types like `F64` and `I32` are hardcoded into Subs and therefore we don't define them here.
|
||||||
/// All that remains are the generic number types (Num, Int, Float) and Result
|
/// Generic number types (Num, Int, Float, etc.) are treated as `DelayedAlias`es resolved during
|
||||||
|
/// type solving.
|
||||||
|
/// All that remains are Signed8, Signed16, etc.
|
||||||
fn default_aliases() -> roc_solve::solve::Aliases {
|
fn default_aliases() -> roc_solve::solve::Aliases {
|
||||||
use roc_types::types::Type;
|
use roc_types::types::Type;
|
||||||
|
|
||||||
let mut solve_aliases = roc_solve::solve::Aliases::default();
|
let mut solve_aliases = roc_solve::solve::Aliases::default();
|
||||||
|
|
||||||
let mut var_store = VarStore::default();
|
|
||||||
|
|
||||||
// Num range := range
|
|
||||||
{
|
|
||||||
let symbol = Symbol::NUM_NUM;
|
|
||||||
let tvar = var_store.fresh();
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![Loc::at_zero(("range".into(), tvar))],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ: Type::Variable(tvar),
|
|
||||||
kind: roc_types::types::AliasKind::Structural,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
// FloatingPoint range := []
|
|
||||||
{
|
|
||||||
let symbol = Symbol::NUM_FLOATINGPOINT;
|
|
||||||
let tvar = var_store.fresh();
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![Loc::at_zero(("range".into(), tvar))],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ: Type::Variable(tvar),
|
|
||||||
kind: roc_types::types::AliasKind::Opaque,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Int range : Num (Integer range)
|
|
||||||
{
|
|
||||||
let symbol = Symbol::NUM_INT;
|
|
||||||
let tvar = var_store.fresh();
|
|
||||||
|
|
||||||
let typ = Type::DelayedAlias(AliasCommon {
|
|
||||||
symbol: Symbol::NUM_NUM,
|
|
||||||
type_arguments: vec![Type::Alias {
|
|
||||||
symbol: Symbol::NUM_INTEGER,
|
|
||||||
type_arguments: vec![("range".into(), Type::Variable(tvar))],
|
|
||||||
lambda_set_variables: vec![],
|
|
||||||
actual: Box::new(Type::Variable(tvar)),
|
|
||||||
kind: AliasKind::Opaque,
|
|
||||||
}],
|
|
||||||
lambda_set_variables: vec![],
|
|
||||||
});
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![Loc::at_zero(("range".into(), tvar))],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ,
|
|
||||||
kind: roc_types::types::AliasKind::Structural,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Float range : Num (FloatingPoint range)
|
|
||||||
{
|
|
||||||
let symbol = Symbol::NUM_FLOAT;
|
|
||||||
let tvar = var_store.fresh();
|
|
||||||
|
|
||||||
let typ = Type::DelayedAlias(AliasCommon {
|
|
||||||
symbol: Symbol::NUM_NUM,
|
|
||||||
type_arguments: vec![Type::Alias {
|
|
||||||
symbol: Symbol::NUM_FLOATINGPOINT,
|
|
||||||
type_arguments: vec![("range".into(), Type::Variable(tvar))],
|
|
||||||
lambda_set_variables: vec![],
|
|
||||||
actual: Box::new(Type::Variable(tvar)),
|
|
||||||
kind: AliasKind::Opaque,
|
|
||||||
}],
|
|
||||||
lambda_set_variables: vec![],
|
|
||||||
});
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![Loc::at_zero(("range".into(), tvar))],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ,
|
|
||||||
kind: roc_types::types::AliasKind::Structural,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Integer range := range
|
|
||||||
{
|
|
||||||
let symbol = Symbol::NUM_INTEGER;
|
|
||||||
let tvar = var_store.fresh();
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![Loc::at_zero(("range".into(), tvar))],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ: Type::Variable(tvar),
|
|
||||||
kind: roc_types::types::AliasKind::Structural,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
let symbol = Symbol::RESULT_RESULT;
|
|
||||||
let tvar1 = var_store.fresh();
|
|
||||||
let tvar2 = var_store.fresh();
|
|
||||||
|
|
||||||
let typ = Type::TagUnion(
|
|
||||||
vec![
|
|
||||||
(TagName::Tag("Ok".into()), vec![Type::Variable(tvar1)]),
|
|
||||||
(TagName::Tag("Err".into()), vec![Type::Variable(tvar2)]),
|
|
||||||
],
|
|
||||||
TypeExtension::Closed,
|
|
||||||
);
|
|
||||||
|
|
||||||
let alias = Alias {
|
|
||||||
region: Region::zero(),
|
|
||||||
type_variables: vec![
|
|
||||||
Loc::at_zero(("ok".into(), tvar1)),
|
|
||||||
Loc::at_zero(("err".into(), tvar2)),
|
|
||||||
],
|
|
||||||
lambda_set_variables: Default::default(),
|
|
||||||
recursion_variables: Default::default(),
|
|
||||||
typ,
|
|
||||||
kind: roc_types::types::AliasKind::Structural,
|
|
||||||
};
|
|
||||||
|
|
||||||
solve_aliases.insert(symbol, alias);
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut zero_opaque = |alias_name: Symbol| {
|
let mut zero_opaque = |alias_name: Symbol| {
|
||||||
let alias = Alias {
|
let alias = Alias {
|
||||||
region: Region::zero(),
|
region: Region::zero(),
|
||||||
|
|
|
@ -301,8 +301,6 @@ impl Aliases {
|
||||||
Some((_, typ, delayed_variables, kind)) => (typ, delayed_variables, kind),
|
Some((_, typ, delayed_variables, kind)) => (typ, delayed_variables, kind),
|
||||||
};
|
};
|
||||||
|
|
||||||
dbg!(symbol, &typ, &delayed_variables);
|
|
||||||
|
|
||||||
let mut substitutions: MutMap<_, _> = Default::default();
|
let mut substitutions: MutMap<_, _> = Default::default();
|
||||||
|
|
||||||
for rec_var in delayed_variables
|
for rec_var in delayed_variables
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue