ast: rename Let to Bind
This commit is contained in:
23
src/ast.rs
23
src/ast.rs
@@ -106,15 +106,18 @@ pub enum Ty {
|
||||
Fn(Vec<Ty>),
|
||||
}
|
||||
|
||||
/// A `let` binding
|
||||
/// A pattern binding
|
||||
/// ```ignore
|
||||
/// let Pat (= Expr)?
|
||||
/// let Pat (= Expr (else Expr)?)?
|
||||
/// const Pat (= Expr (else Expr)?)?
|
||||
/// static Pat (= Expr (else Expr)?)?
|
||||
/// Pat => Expr // in match
|
||||
/// ``````
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Let<A: Annotation = Span>(pub LetKind, pub Pat, pub Vec<Anno<Expr<A>, A>>);
|
||||
pub struct Bind<A: Annotation = Span>(pub BindKind, pub Pat, pub Vec<Anno<Expr<A>, A>>);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum LetKind {
|
||||
pub enum BindKind {
|
||||
/// A `let Pat (= Expr (else Expr)?)?` binding
|
||||
Let,
|
||||
/// A `const Pat = Expr` binding
|
||||
@@ -174,8 +177,8 @@ pub enum Expr<A: Annotation = Span> {
|
||||
MetId(String),
|
||||
/// A literal bool, string, char, or int
|
||||
Lit(Literal),
|
||||
/// let Pat<NoTopAlt> = expr
|
||||
Let(Box<Let<A>>),
|
||||
/// (let | const | static) Pat<NoTopAlt> (= expr (else expr)?)?
|
||||
Bind(Box<Bind<A>>),
|
||||
/// (struct | enum | type) Pat<NoTopAlt>
|
||||
Struct(Box<Typedef>),
|
||||
/// `| Pat<Tuple> | Expr` | `|| Expr` | `fn Ident? (Pat,*) Expr`
|
||||
@@ -336,11 +339,11 @@ impl<A: Annotation> Display for Fn<A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<A: Annotation> Display for Let<A> {
|
||||
impl<A: Annotation> Display for Bind<A> {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let Self(op, pat, exprs) = self;
|
||||
|
||||
if let LetKind::Match = op {
|
||||
if let BindKind::Match = op {
|
||||
return f.delimit(fmt!("{pat} => "), "").list(exprs, ",!? ");
|
||||
}
|
||||
|
||||
@@ -353,7 +356,7 @@ impl<A: Annotation> Display for Let<A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for LetKind {
|
||||
impl Display for BindKind {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(match self {
|
||||
Self::Let => "let",
|
||||
@@ -404,7 +407,7 @@ impl<A: Annotation> Display for Expr<A> {
|
||||
Self::Id(id) => id.fmt(f),
|
||||
Self::MetId(id) => write!(f, "`{id}"),
|
||||
Self::Lit(literal) => literal.fmt(f),
|
||||
Self::Let(v) => v.fmt(f),
|
||||
Self::Bind(v) => v.fmt(f),
|
||||
Self::Struct(v) => v.fmt(f),
|
||||
Self::Make(v) => v.fmt(f),
|
||||
Self::Mod(v) => v.fmt(f),
|
||||
|
||||
Reference in New Issue
Block a user