mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 06:44:46 +00:00
rename pattern2 -> exhaustive
This commit is contained in:
parent
5ff5def504
commit
fb3aced178
4 changed files with 19 additions and 19 deletions
|
@ -1,6 +1,6 @@
|
||||||
|
use crate::exhaustive::{Ctor, RenderAs, TagId, Union};
|
||||||
use crate::experiment::{DestructType, Env, Expr, JoinPointId, Literal, Pattern, Stmt};
|
use crate::experiment::{DestructType, Env, Expr, JoinPointId, Literal, Pattern, Stmt};
|
||||||
use crate::layout::{Builtin, Layout};
|
use crate::layout::{Builtin, Layout};
|
||||||
use crate::pattern2::{Ctor, RenderAs, TagId, Union};
|
|
||||||
use bumpalo::Bump;
|
use bumpalo::Bump;
|
||||||
use roc_collections::all::{MutMap, MutSet};
|
use roc_collections::all::{MutMap, MutSet};
|
||||||
use roc_module::ident::TagName;
|
use roc_module::ident::TagName;
|
||||||
|
@ -61,7 +61,7 @@ pub enum Test<'a> {
|
||||||
IsCtor {
|
IsCtor {
|
||||||
tag_id: u8,
|
tag_id: u8,
|
||||||
tag_name: TagName,
|
tag_name: TagName,
|
||||||
union: crate::pattern2::Union,
|
union: crate::exhaustive::Union,
|
||||||
arguments: Vec<(Pattern<'a>, Layout<'a>)>,
|
arguments: Vec<(Pattern<'a>, Layout<'a>)>,
|
||||||
},
|
},
|
||||||
IsInt(i64),
|
IsInt(i64),
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use self::InProgressProc::*;
|
use self::InProgressProc::*;
|
||||||
|
use crate::exhaustive::{Ctor, Guard, RenderAs, TagId};
|
||||||
use crate::layout::{
|
use crate::layout::{
|
||||||
list_layout_from_elem, Builtin, Layout, LayoutCache, LayoutProblem, Ownership,
|
list_layout_from_elem, Builtin, Layout, LayoutCache, LayoutProblem, Ownership,
|
||||||
};
|
};
|
||||||
use crate::pattern2::{Ctor, Guard, RenderAs, TagId};
|
|
||||||
use bumpalo::collections::Vec;
|
use bumpalo::collections::Vec;
|
||||||
use bumpalo::Bump;
|
use bumpalo::Bump;
|
||||||
use roc_collections::all::{default_hasher, MutMap, MutSet};
|
use roc_collections::all::{default_hasher, MutMap, MutSet};
|
||||||
|
@ -17,7 +17,7 @@ use ven_pretty::{BoxAllocator, DocAllocator, DocBuilder};
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub enum MonoProblem {
|
pub enum MonoProblem {
|
||||||
PatternProblem(crate::pattern2::Error),
|
PatternProblem(crate::exhaustive::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq)]
|
#[derive(Clone, Debug, PartialEq)]
|
||||||
|
@ -711,14 +711,14 @@ fn patterns_to_when<'a>(
|
||||||
// to pass type checking. So the order in which we add them to the body does not matter: there
|
// to pass type checking. So the order in which we add them to the body does not matter: there
|
||||||
// are only stores anyway, no branches.
|
// are only stores anyway, no branches.
|
||||||
for (pattern_var, pattern) in patterns.into_iter() {
|
for (pattern_var, pattern) in patterns.into_iter() {
|
||||||
let context = crate::pattern2::Context::BadArg;
|
let context = crate::exhaustive::Context::BadArg;
|
||||||
let mono_pattern = from_can_pattern(env, layout_cache, &pattern.value);
|
let mono_pattern = from_can_pattern(env, layout_cache, &pattern.value);
|
||||||
|
|
||||||
match crate::pattern2::check(
|
match crate::exhaustive::check(
|
||||||
pattern.region,
|
pattern.region,
|
||||||
&[(
|
&[(
|
||||||
Located::at(pattern.region, mono_pattern.clone()),
|
Located::at(pattern.region, mono_pattern.clone()),
|
||||||
crate::pattern2::Guard::NoGuard,
|
crate::exhaustive::Guard::NoGuard,
|
||||||
)],
|
)],
|
||||||
context,
|
context,
|
||||||
) {
|
) {
|
||||||
|
@ -1817,11 +1817,11 @@ fn to_opt_branches<'a>(
|
||||||
// NOTE exhaustiveness is checked after the construction of all the branches
|
// NOTE exhaustiveness is checked after the construction of all the branches
|
||||||
// In contrast to elm (currently), we still do codegen even if a pattern is non-exhaustive.
|
// In contrast to elm (currently), we still do codegen even if a pattern is non-exhaustive.
|
||||||
// So we not only report exhaustiveness errors, but also correct them
|
// So we not only report exhaustiveness errors, but also correct them
|
||||||
let context = crate::pattern2::Context::BadCase;
|
let context = crate::exhaustive::Context::BadCase;
|
||||||
match crate::pattern2::check(region, &loc_branches, context) {
|
match crate::exhaustive::check(region, &loc_branches, context) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
Err(errors) => {
|
Err(errors) => {
|
||||||
use crate::pattern2::Error::*;
|
use crate::exhaustive::Error::*;
|
||||||
let mut is_not_exhaustive = false;
|
let mut is_not_exhaustive = false;
|
||||||
let mut overlapping_branches = std::vec::Vec::new();
|
let mut overlapping_branches = std::vec::Vec::new();
|
||||||
|
|
||||||
|
@ -2328,12 +2328,12 @@ pub enum Pattern<'a> {
|
||||||
BitLiteral {
|
BitLiteral {
|
||||||
value: bool,
|
value: bool,
|
||||||
tag_name: TagName,
|
tag_name: TagName,
|
||||||
union: crate::pattern2::Union,
|
union: crate::exhaustive::Union,
|
||||||
},
|
},
|
||||||
EnumLiteral {
|
EnumLiteral {
|
||||||
tag_id: u8,
|
tag_id: u8,
|
||||||
tag_name: TagName,
|
tag_name: TagName,
|
||||||
union: crate::pattern2::Union,
|
union: crate::exhaustive::Union,
|
||||||
},
|
},
|
||||||
StrLiteral(Box<str>),
|
StrLiteral(Box<str>),
|
||||||
|
|
||||||
|
@ -2343,7 +2343,7 @@ pub enum Pattern<'a> {
|
||||||
tag_id: u8,
|
tag_id: u8,
|
||||||
arguments: Vec<'a, (Pattern<'a>, Layout<'a>)>,
|
arguments: Vec<'a, (Pattern<'a>, Layout<'a>)>,
|
||||||
layout: Layout<'a>,
|
layout: Layout<'a>,
|
||||||
union: crate::pattern2::Union,
|
union: crate::exhaustive::Union,
|
||||||
},
|
},
|
||||||
|
|
||||||
// Runtime Exceptions
|
// Runtime Exceptions
|
||||||
|
@ -2407,8 +2407,8 @@ pub fn from_can_pattern<'a>(
|
||||||
arguments,
|
arguments,
|
||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
|
use crate::exhaustive::Union;
|
||||||
use crate::layout::UnionVariant::*;
|
use crate::layout::UnionVariant::*;
|
||||||
use crate::pattern2::Union;
|
|
||||||
|
|
||||||
let variant =
|
let variant =
|
||||||
crate::layout::union_sorted_tags(env.arena, *whole_var, env.subs, env.pointer_size);
|
crate::layout::union_sorted_tags(env.arena, *whole_var, env.subs, env.pointer_size);
|
||||||
|
@ -2461,7 +2461,7 @@ pub fn from_can_pattern<'a>(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let union = crate::pattern2::Union {
|
let union = crate::exhaustive::Union {
|
||||||
render_as: RenderAs::Tag,
|
render_as: RenderAs::Tag,
|
||||||
alternatives: ctors,
|
alternatives: ctors,
|
||||||
};
|
};
|
||||||
|
@ -2473,7 +2473,7 @@ pub fn from_can_pattern<'a>(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Unwrapped(field_layouts) => {
|
Unwrapped(field_layouts) => {
|
||||||
let union = crate::pattern2::Union {
|
let union = crate::exhaustive::Union {
|
||||||
render_as: RenderAs::Tag,
|
render_as: RenderAs::Tag,
|
||||||
alternatives: vec![Ctor {
|
alternatives: vec![Ctor {
|
||||||
tag_id: TagId(0),
|
tag_id: TagId(0),
|
||||||
|
@ -2511,7 +2511,7 @@ pub fn from_can_pattern<'a>(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let union = crate::pattern2::Union {
|
let union = crate::exhaustive::Union {
|
||||||
render_as: RenderAs::Tag,
|
render_as: RenderAs::Tag,
|
||||||
alternatives: ctors,
|
alternatives: ctors,
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,6 +23,6 @@ pub mod decision_tree;
|
||||||
#[allow(clippy::ptr_arg)]
|
#[allow(clippy::ptr_arg)]
|
||||||
pub mod decision_tree2;
|
pub mod decision_tree2;
|
||||||
#[allow(clippy::ptr_arg)]
|
#[allow(clippy::ptr_arg)]
|
||||||
pub mod pattern;
|
pub mod exhaustive;
|
||||||
#[allow(clippy::ptr_arg)]
|
#[allow(clippy::ptr_arg)]
|
||||||
pub mod pattern2;
|
pub mod pattern;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue