Rename variant_var to tag_union_var

This commit is contained in:
Richard Feldman 2022-08-10 14:37:15 -04:00 committed by Ayaz Hafiz
parent c81eecd644
commit 7e12bcff1d
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
8 changed files with 53 additions and 33 deletions

View file

@ -444,7 +444,7 @@ fn no_region<T>(value: T) -> Loc<T> {
#[inline(always)]
fn tag(name: &'static str, args: Vec<Expr>, var_store: &mut VarStore) -> Expr {
Expr::Tag {
variant_var: var_store.fresh(),
tag_union_var: var_store.fresh(),
ext_var: var_store.fresh(),
name: TagName(name.into()),
arguments: args

View file

@ -535,12 +535,12 @@ fn deep_copy_expr_help<C: CopyEnv>(env: &mut C, copied: &mut Vec<Variable>, expr
},
Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments,
} => Tag {
variant_var: sub!(*variant_var),
tag_union_var: sub!(*variant_var),
ext_var: sub!(*ext_var),
name: name.clone(),
arguments: arguments
@ -1154,13 +1154,13 @@ mod test {
let var2 = new_var(&mut subs, FlexVar(Some(b)));
let expr = Expr::Tag {
variant_var: var1,
tag_union_var: var1,
ext_var: Variable::EMPTY_TAG_UNION,
name: TagName("F".into()),
arguments: vec![(
var2,
Loc::at_zero(Expr::Tag {
variant_var: var2,
tag_union_var: var2,
ext_var: Variable::EMPTY_TAG_UNION,
name: TagName("G".into()),
arguments: vec![],
@ -1175,7 +1175,7 @@ mod test {
match expr {
Expr::Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
mut arguments,
@ -1209,7 +1209,7 @@ mod test {
match arg.value {
Expr::Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments,
@ -1240,13 +1240,13 @@ mod test {
let var2 = new_var(&mut source, FlexVar(Some(b)));
let expr = Expr::Tag {
variant_var: var1,
tag_union_var: var1,
ext_var: Variable::EMPTY_TAG_UNION,
name: TagName("F".into()),
arguments: vec![(
var2,
Loc::at_zero(Expr::Tag {
variant_var: var2,
tag_union_var: var2,
ext_var: Variable::EMPTY_TAG_UNION,
name: TagName("G".into()),
arguments: vec![],
@ -1261,7 +1261,7 @@ mod test {
match expr {
Expr::Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
mut arguments,
@ -1290,7 +1290,7 @@ mod test {
match arg.value {
Expr::Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments,

View file

@ -184,7 +184,7 @@ pub enum Expr {
// Sum Types
Tag {
variant_var: Variable,
tag_union_var: Variable,
ext_var: Variable,
name: TagName,
arguments: Vec<(Variable, Loc<Expr>)>,
@ -772,12 +772,12 @@ pub fn canonicalize_expr<'a>(
return (fn_expr, output);
}
Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
..
} => Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments: args,
@ -788,7 +788,7 @@ pub fn canonicalize_expr<'a>(
name,
..
} => Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments: args,
@ -1863,7 +1863,7 @@ pub fn inline_calls(var_store: &mut VarStore, scope: &mut Scope, expr: Expr) ->
}
Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments,

View file

@ -244,7 +244,7 @@ pub fn walk_expr<V: Visitor>(visitor: &mut V, expr: &Expr, var: Variable) {
walk_record_fields(visitor, updates.iter());
}
Expr::Tag {
variant_var: _,
tag_union_var: _,
ext_var: _,
name: _,
arguments,

View file

@ -993,7 +993,7 @@ pub fn constrain_expr(
body_con
}
Tag {
variant_var,
tag_union_var: variant_var,
ext_var,
name,
arguments,

View file

@ -261,7 +261,7 @@ fn decoder_step_field(env: &mut Env, fields: Vec<Lowercase>) -> Expr {
var: Variable::NULL, // TODO
region: Region::zero(),
loc_expr: Box::new(Loc::at_zero(Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::NULL, // TODO
name: "Ok".into(),
arguments: vec![(
@ -280,7 +280,7 @@ fn decoder_step_field(env: &mut Env, fields: Vec<Lowercase>) -> Expr {
};
Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::NULL, // TODO
name: "Ok".into(),
arguments: vec![(
@ -324,7 +324,7 @@ fn decoder_step_field(env: &mut Env, fields: Vec<Lowercase>) -> Expr {
degenerate: false,
}],
value: Loc::at_zero(Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::NULL, // TODO
name: "Err".into(),
arguments: vec![(
@ -484,7 +484,7 @@ fn decoder_step_field(env: &mut Env, fields: Vec<Lowercase>) -> Expr {
// }
// )
Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::EMPTY_TAG_UNION,
name: "Keep".into(),
arguments: vec![(
@ -529,7 +529,7 @@ fn decoder_step_field(env: &mut Env, fields: Vec<Lowercase>) -> Expr {
degenerate: false,
}],
value: Loc::at_zero(Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::EMPTY_TAG_UNION,
name: "Skip".into(),
arguments: Vec::new(),
@ -611,7 +611,7 @@ fn decoder_finalizer(env: &mut Env, fields: &[Lowercase]) -> Expr {
let done_var = Variable::NULL; // TODO
Expr::Tag {
variant_var,
tag_union_var: variant_var,
ext_var: Variable::EMPTY_TAG_UNION,
name: "Ok".into(),
arguments: vec![(done_var, Loc::at_zero(done_record))],
@ -653,13 +653,13 @@ fn decoder_finalizer(env: &mut Env, fields: &[Lowercase]) -> Expr {
degenerate: false,
}],
value: Loc::at_zero(Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::EMPTY_TAG_UNION,
name: "Err".into(),
arguments: vec![(
Variable::NULL, // TODO
Loc::at_zero(Expr::Tag {
variant_var: Variable::NULL, // TODO
tag_union_var: Variable::NULL, // TODO
ext_var: Variable::EMPTY_TAG_UNION,
name: "TooShort".into(),
arguments: Vec::new(),

View file

@ -3857,7 +3857,7 @@ pub fn with_hole<'a>(
)
}
Tag {
variant_var,
tag_union_var: variant_var,
name: tag_name,
arguments: args,
..
@ -5679,7 +5679,7 @@ fn tag_union_to_function<'a>(
}
let loc_body = Loc::at_zero(roc_can::expr::Expr::Tag {
variant_var: return_variable,
tag_union_var: return_variable,
name: tag_name,
arguments: loc_expr_args,
ext_var,

View file

@ -2485,6 +2485,26 @@ pub trait Label: Sized + Clone {
pub type UnionTags = UnionLabels<TagName>;
pub type UnionLambdas = UnionLabels<Symbol>;
impl UnionTags {
pub fn for_result(subs: &mut Subs, ok_payload: Variable, err_payload: Variable) -> Self {
let ok_tuple = {
let variables_slice = VariableSubsSlice::reserve_into_subs(subs, 1);
VariableSubsSlice::insert_into_subs(subs, std::iter::once(ok_payload));
("Ok".into(), variables_slice)
};
let err_tuple = {
let variables_slice = VariableSubsSlice::reserve_into_subs(subs, 1);
VariableSubsSlice::insert_into_subs(subs, std::iter::once(err_payload));
("Err".into(), variables_slice)
};
UnionTags::insert_slices_into_subs(subs, [err_tuple, ok_tuple])
}
}
impl Label for TagName {
fn index_subs(subs: &Subs, idx: SubsIndex<Self>) -> &Self {
&subs[idx]