diff options
| author | Greg Brown <gmb60@cam.ac.uk> | 2021-01-19 22:37:35 +0000 | 
|---|---|---|
| committer | Greg Brown <gmb60@cam.ac.uk> | 2021-01-19 22:38:45 +0000 | 
| commit | 8f7a17e0f48e3586fae619be08351c6761b07596 (patch) | |
| tree | 0fe2c78b93cdfcbe7b6621c272c8b73eacfc53c4 | |
| parent | f6916209d57682493288ab42e695204b95d0ba23 (diff) | |
Remove usage of `extra-traits` feature of syn.
| -rw-r--r-- | Cargo.toml | 5 | ||||
| -rw-r--r-- | src/chomp/ast/mod.rs | 9 | ||||
| -rw-r--r-- | src/chomp/typed/infer.rs | 8 | ||||
| -rw-r--r-- | src/nibble/convert.rs | 16 | ||||
| -rw-r--r-- | src/nibble/cst.rs | 24 | 
5 files changed, 29 insertions, 33 deletions
@@ -10,11 +10,8 @@ members = ["autochomp", "chewed", "chomp-macro"]  [dependencies]  heck = "0.3.2"  quote = "1.0.8" +syn = "1.0.58"  [dependencies.proc-macro2]  version = "1.0.24"  features = ["span-locations"] - -[dependencies.syn] -version = "1.0.58" -features = ["extra-traits"] diff --git a/src/chomp/ast/mod.rs b/src/chomp/ast/mod.rs index 9a159e4..e4ed2fc 100644 --- a/src/chomp/ast/mod.rs +++ b/src/chomp/ast/mod.rs @@ -1,7 +1,6 @@  use std::fmt::{self, Display};  use proc_macro2::Span; -use syn::Token;  use super::Name; @@ -16,9 +15,9 @@ pub type Literal = String;  #[derive(Clone, Debug)]  pub struct Cat {      pub first: Box<NamedExpression>, -    pub punct: Option<Token![.]>, +    pub punct: Option<Span>,      pub second: Box<NamedExpression>, -    pub rest: Vec<(Option<Token![.]>, NamedExpression)>, +    pub rest: Vec<(Option<Span>, NamedExpression)>,  }  impl Display for Cat { @@ -49,9 +48,9 @@ impl Eq for Cat {}  #[derive(Clone, Debug)]  pub struct Alt {      pub first: Box<NamedExpression>, -    pub punct: Option<Token![|]>, +    pub punct: Option<Span>,      pub second: Box<NamedExpression>, -    pub rest: Vec<(Option<Token![|]>, NamedExpression)> +    pub rest: Vec<(Option<Span>, NamedExpression)>  }  impl Display for Alt { diff --git a/src/chomp/typed/infer.rs b/src/chomp/typed/infer.rs index 0161471..8095103 100644 --- a/src/chomp/typed/infer.rs +++ b/src/chomp/typed/infer.rs @@ -48,11 +48,11 @@ impl Folder for TypeInfer<'_> {                  let rest = rest                      .into_iter()                      .map(|(punct, term)| -> Result<_, TypeError> { -                        Ok((punct.map(|p| p.span), term.fold(&mut infer)?)) +                        Ok((punct, term.fold(&mut infer)?))                      })                      .collect::<Result<Vec<_>, _>>()?;                  Ok(TypedExpression { -                    inner: super::Cat::new(first, punct.map(|p| p.span), second, rest)?.into(), +                    inner: super::Cat::new(first, punct, second, rest)?.into(),                      name,                      span,                  }) @@ -71,11 +71,11 @@ impl Folder for TypeInfer<'_> {                  let rest = rest                      .into_iter()                      .map(|(punct, term)| -> Result<_, TypeError> { -                        Ok((punct.map(|p| p.span), term.fold(&mut infer)?)) +                        Ok((punct, term.fold(&mut infer)?))                      })                      .collect::<Result<Vec<_>, _>>()?;                  Ok(TypedExpression { -                    inner: super::Alt::new(first, punct.map(|p| p.span), second, rest)?.into(), +                    inner: super::Alt::new(first, punct, second, rest)?.into(),                      name,                      span,                  }) diff --git a/src/nibble/convert.rs b/src/nibble/convert.rs index e3c8bfc..f7c20be 100644 --- a/src/nibble/convert.rs +++ b/src/nibble/convert.rs @@ -206,25 +206,25 @@ impl Convert for Cat {          let mut iter = self.0.into_pairs();          let (first, punct) = match iter.next().unwrap() { -            Pair::Punctuated(t, p) => (t.convert(context)?, Some(p)), +            Pair::Punctuated(t, p) => (t.convert(context)?, Some(p.span)),              Pair::End(t) => (t.convert(context)?, None),          };          let mut rest = Vec::new();          let (span, _) = iter.try_fold(              ( -                first.span.and_then(|s| punct.and_then(|p| s.join(p.span))), +                first.span.and_then(|s| punct.and_then(|p| s.join(p))),                  punct,              ),              |(span, punct), pair| {                  let (snd, p) = match pair { -                    Pair::Punctuated(t, p) => (t.convert(context)?, Some(p)), +                    Pair::Punctuated(t, p) => (t.convert(context)?, Some(p.span)),                      Pair::End(t) => (t.convert(context)?, None),                  };                  let span = span                      .and_then(|s| snd.span.and_then(|t| s.join(t))) -                    .and_then(|s| p.and_then(|p| s.join(p.span))); +                    .and_then(|s| p.and_then(|p| s.join(p)));                  rest.push((punct, snd));                  Ok((span, p))              }, @@ -268,25 +268,25 @@ impl Convert for Alt {          let mut iter = self.0.into_pairs();          let (first, punct) = match iter.next().unwrap() { -            Pair::Punctuated(t, p) => (t.convert(context)?, Some(p)), +            Pair::Punctuated(t, p) => (t.convert(context)?, Some(p.span)),              Pair::End(t) => (t.convert(context)?, None),          };          let mut rest = Vec::new();          let (span, _) = iter.try_fold(              ( -                first.span.and_then(|s| punct.and_then(|p| s.join(p.span))), +                first.span.and_then(|s| punct.and_then(|p| s.join(p))),                  punct,              ),              |(span, punct), pair| {                  let (snd, p) = match pair { -                    Pair::Punctuated(t, p) => (t.convert(context)?, Some(p)), +                    Pair::Punctuated(t, p) => (t.convert(context)?, Some(p.span)),                      Pair::End(t) => (t.convert(context)?, None),                  };                  let span = span                      .and_then(|s| snd.span.and_then(|t| s.join(t))) -                    .and_then(|s| p.and_then(|p| s.join(p.span))); +                    .and_then(|s| p.and_then(|p| s.join(p)));                  rest.push((punct, snd));                  Ok((span, p))              }, diff --git a/src/nibble/cst.rs b/src/nibble/cst.rs index 2fcc99f..fc698e8 100644 --- a/src/nibble/cst.rs +++ b/src/nibble/cst.rs @@ -19,7 +19,7 @@ pub type Ident = syn::Ident;  pub type Literal = LitStr; -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct ArgList<T> {      paren_token: Paren,      args: Punctuated<T, Comma>, @@ -58,7 +58,7 @@ impl<T: Parse> Parse for ArgList<T> {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Call {      pub name: Ident,      pub args: ArgList<Expression>, @@ -78,7 +78,7 @@ impl Parse for Call {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Fix {      bracket_token: Bracket,      pub arg: Ident, @@ -109,7 +109,7 @@ impl Parse for Fix {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct ParenExpression {      paren_token: Paren,      pub expr: Expression, @@ -124,7 +124,7 @@ impl Parse for ParenExpression {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub enum Term {      Epsilon(Epsilon),      Ident(Ident), @@ -173,7 +173,7 @@ impl Parse for Term {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Cat(pub Punctuated<Term, Token![.]>);  impl Parse for Cat { @@ -200,7 +200,7 @@ impl Cat {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Label {      colon_tok: Token![:],      pub label: Ident, @@ -220,7 +220,7 @@ impl Parse for Label {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Labelled {      pub cat: Cat,      pub label: Option<Label>, @@ -248,7 +248,7 @@ impl Parse for Labelled {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct Alt(pub Punctuated<Labelled, Token![|]>);  impl Parse for Alt { @@ -259,7 +259,7 @@ impl Parse for Alt {  pub type Expression = Alt; -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct LetStatement {      let_token: Token![let],      name: Ident, @@ -299,7 +299,7 @@ impl Parse for LetStatement {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct GoalStatement {      match_token: Token![match],      expr: Expression, @@ -320,7 +320,7 @@ impl Parse for GoalStatement {      }  } -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone)]  pub struct File {      lets: Vec<LetStatement>,      goal: GoalStatement,  | 
