mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-03 16:44:33 +00:00
Replace Mark:: functions with consts
This commit is contained in:
parent
f04d8f5b03
commit
b715d3e2f8
3 changed files with 16 additions and 27 deletions
|
@ -73,7 +73,7 @@ pub fn run(
|
||||||
let mut pools = Pools::default();
|
let mut pools = Pools::default();
|
||||||
let state = State {
|
let state = State {
|
||||||
vars_by_symbol: vars_by_symbol.clone(),
|
vars_by_symbol: vars_by_symbol.clone(),
|
||||||
mark: Mark::none().next(),
|
mark: Mark::NONE.next(),
|
||||||
};
|
};
|
||||||
let rank = Rank::toplevel();
|
let rank = Rank::toplevel();
|
||||||
|
|
||||||
|
@ -661,7 +661,7 @@ fn register(subs: &mut Subs, rank: Rank, pools: &mut Pools, content: Content) ->
|
||||||
let var = subs.fresh(Descriptor {
|
let var = subs.fresh(Descriptor {
|
||||||
content,
|
content,
|
||||||
rank,
|
rank,
|
||||||
mark: Mark::none(),
|
mark: Mark::NONE,
|
||||||
copy: None,
|
copy: None,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
35
src/subs.rs
35
src/subs.rs
|
@ -9,20 +9,9 @@ use std::sync::atomic::{AtomicUsize, Ordering};
|
||||||
pub struct Mark(i32);
|
pub struct Mark(i32);
|
||||||
|
|
||||||
impl Mark {
|
impl Mark {
|
||||||
#[inline(always)]
|
pub const NONE: Mark = Mark(2);
|
||||||
pub fn none() -> Mark {
|
pub const OCCURS: Mark = Mark(1);
|
||||||
Mark(2)
|
pub const GET_VAR_NAMES: Mark = Mark(1);
|
||||||
}
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
pub fn occurs() -> Mark {
|
|
||||||
Mark(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
pub fn get_var_names() -> Mark {
|
|
||||||
Mark(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn next(self) -> Mark {
|
pub fn next(self) -> Mark {
|
||||||
|
@ -32,11 +21,11 @@ impl Mark {
|
||||||
|
|
||||||
impl fmt::Debug for Mark {
|
impl fmt::Debug for Mark {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
if self == &Mark::none() {
|
if self == &Mark::NONE {
|
||||||
write!(f, "none")
|
write!(f, "none")
|
||||||
} else if self == &Mark::occurs() {
|
} else if self == &Mark::OCCURS {
|
||||||
write!(f, "occurs")
|
write!(f, "occurs")
|
||||||
} else if self == &Mark::get_var_names() {
|
} else if self == &Mark::GET_VAR_NAMES {
|
||||||
write!(f, "get_var_names")
|
write!(f, "get_var_names")
|
||||||
} else {
|
} else {
|
||||||
write!(f, "Mark({})", self.0)
|
write!(f, "Mark({})", self.0)
|
||||||
|
@ -251,7 +240,7 @@ impl Subs {
|
||||||
Descriptor {
|
Descriptor {
|
||||||
content: content.clone(),
|
content: content.clone(),
|
||||||
rank: Rank::NONE,
|
rank: Rank::NONE,
|
||||||
mark: Mark::none(),
|
mark: Mark::NONE,
|
||||||
copy: None,
|
copy: None,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -343,7 +332,7 @@ impl From<Content> for Descriptor {
|
||||||
Descriptor {
|
Descriptor {
|
||||||
content,
|
content,
|
||||||
rank: Rank::NONE,
|
rank: Rank::NONE,
|
||||||
mark: Mark::none(),
|
mark: Mark::NONE,
|
||||||
copy: None,
|
copy: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -436,10 +425,10 @@ fn get_var_names(
|
||||||
use self::Content::*;
|
use self::Content::*;
|
||||||
let desc = subs.get(var);
|
let desc = subs.get(var);
|
||||||
|
|
||||||
if desc.mark == Mark::get_var_names() {
|
if desc.mark == Mark::GET_VAR_NAMES {
|
||||||
taken_names
|
taken_names
|
||||||
} else {
|
} else {
|
||||||
subs.set_mark(var, Mark::get_var_names());
|
subs.set_mark(var, Mark::GET_VAR_NAMES);
|
||||||
|
|
||||||
match desc.content {
|
match desc.content {
|
||||||
Error(_) | FlexVar(None) => taken_names,
|
Error(_) | FlexVar(None) => taken_names,
|
||||||
|
@ -534,10 +523,10 @@ where
|
||||||
fn var_to_err_type(subs: &mut Subs, state: &mut NameState, var: Variable) -> ErrorType {
|
fn var_to_err_type(subs: &mut Subs, state: &mut NameState, var: Variable) -> ErrorType {
|
||||||
let desc = subs.get(var);
|
let desc = subs.get(var);
|
||||||
|
|
||||||
if desc.mark == Mark::occurs() {
|
if desc.mark == Mark::OCCURS {
|
||||||
ErrorType::Infinite
|
ErrorType::Infinite
|
||||||
} else {
|
} else {
|
||||||
subs.set_mark(var, Mark::occurs());
|
subs.set_mark(var, Mark::OCCURS);
|
||||||
|
|
||||||
let err_type = content_to_err_type(subs, state, var, desc.content);
|
let err_type = content_to_err_type(subs, state, var, desc.content);
|
||||||
|
|
||||||
|
|
|
@ -442,7 +442,7 @@ fn merge(subs: &mut Subs, ctx: &Context, content: Content) {
|
||||||
let desc = Descriptor {
|
let desc = Descriptor {
|
||||||
content,
|
content,
|
||||||
rank,
|
rank,
|
||||||
mark: Mark::none(),
|
mark: Mark::NONE,
|
||||||
copy: None,
|
copy: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -463,7 +463,7 @@ fn fresh(subs: &mut Subs, pool: &mut Pool, ctx: &Context, content: Content) -> V
|
||||||
Descriptor {
|
Descriptor {
|
||||||
content,
|
content,
|
||||||
rank: ctx.first_desc.rank.min(ctx.second_desc.rank),
|
rank: ctx.first_desc.rank.min(ctx.second_desc.rank),
|
||||||
mark: Mark::none(),
|
mark: Mark::NONE,
|
||||||
copy: None,
|
copy: None,
|
||||||
},
|
},
|
||||||
pool,
|
pool,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue