diff options
author | Greg Brown <gmb60@cam.ac.uk> | 2021-01-19 22:48:36 +0000 |
---|---|---|
committer | Greg Brown <gmb60@cam.ac.uk> | 2021-01-19 22:48:36 +0000 |
commit | faa3f30deb32d0a1fd7cb196559762635b22ecfd (patch) | |
tree | 6ab8bc07c32f51811929c03320f0a87b4ca8ae3c | |
parent | 8f7a17e0f48e3586fae619be08351c6761b07596 (diff) |
Remove usage of feature of proc_macro2.
-rw-r--r-- | Cargo.toml | 5 | ||||
-rw-r--r-- | src/chomp/ast/error.rs | 61 | ||||
-rw-r--r-- | src/nibble/convert.rs | 19 |
3 files changed, 46 insertions, 39 deletions
@@ -9,9 +9,6 @@ members = ["autochomp", "chewed", "chomp-macro"] [dependencies] heck = "0.3.2" +proc-macro2 = "1.0.24" quote = "1.0.8" syn = "1.0.58" - -[dependencies.proc-macro2] -version = "1.0.24" -features = ["span-locations"] diff --git a/src/chomp/ast/error.rs b/src/chomp/ast/error.rs index 7be5354..12d7b90 100644 --- a/src/chomp/ast/error.rs +++ b/src/chomp/ast/error.rs @@ -1,4 +1,7 @@ -use std::{error::Error, fmt::{self, Display}}; +use std::{ + error::Error, + fmt::{self, Display}, +}; use proc_macro2::Span; @@ -8,26 +11,27 @@ use super::{Call, Parameter}; #[derive(Debug)] pub enum SubstituteError { - FreeParameter { param: Parameter, span: Option<Span>, name: Option<Name> }, - WrongArgCount { call: Call, expected: usize, span: Option<Span> }, + FreeParameter { + param: Parameter, + span: Option<Span>, + name: Option<Name>, + }, + WrongArgCount { + call: Call, + expected: usize, + span: Option<Span>, + }, } impl From<SubstituteError> for syn::Error { fn from(e: SubstituteError) -> Self { - match e { - SubstituteError::FreeParameter { span, .. } => { - Self::new(span.unwrap_or_else(Span::call_site), "unbound parameter") - } - SubstituteError::WrongArgCount { call, expected, span } => { - let msg = if call.args.len() == 1 { - format!("this function takes {} arguments but 1 was supplied", expected) - } else { - format!("this function takes {} arguments but {} were supplied", expected, call.args.len()) - }; + let msg = e.to_string(); + let span = match e { + SubstituteError::FreeParameter { span, .. } => span, + SubstituteError::WrongArgCount { span, .. } => span, + }; - Self::new(span.unwrap_or_else(Span::call_site), msg) - } - } + Self::new(span.unwrap_or_else(Span::call_site), msg) } } @@ -35,19 +39,30 @@ impl Display for SubstituteError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::FreeParameter { param, span, name } => { - let start = span.unwrap_or_else(Span::call_site).start(); if let Some(name) = name { - write!(f, "{}:{}: unbound parameter `{}`", start.line, start.column, name) + write!(f, "unbound parameter: `{}`", name) } else { - write!(f, "{}:{}: unbound parameter '{}", start.line, start.column, param.index) + write!(f, "unbound parameter: '{}", param.index) } } - Self::WrongArgCount { call, expected, span } => { - let start = span.unwrap_or_else(Span::call_site).start(); + Self::WrongArgCount { + call, + expected, + span, + } => { if call.args.len() == 1 { - write!(f, "{}:{}: this function takes {} arguments but 1 was supplied", start.line, start.column, expected) + write!( + f, + "this function takes {} arguments but 1 was supplied", + expected + ) } else { - write!(f, "{}:{}: this function takes {} arguments but {} were supplied", start.line, start.column, expected, call.args.len()) + write!( + f, + "this function takes {} arguments but {} were supplied", + expected, + call.args.len() + ) } } } diff --git a/src/nibble/convert.rs b/src/nibble/convert.rs index f7c20be..3310b2a 100644 --- a/src/nibble/convert.rs +++ b/src/nibble/convert.rs @@ -73,12 +73,12 @@ pub enum ConvertError { impl From<ConvertError> for syn::Error { fn from(e: ConvertError) -> Self { - match e { - ConvertError::UndeclaredName(name) => { - let ident = name.into_ident(Span::call_site()); - Self::new(ident.span(), "undeclared name") - } - } + let msg = e.to_string(); + let span = match e { + ConvertError::UndeclaredName(name) => name.span(), + }; + + Self::new(span.unwrap_or_else(Span::call_site), msg) } } @@ -86,12 +86,7 @@ impl fmt::Display for ConvertError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::UndeclaredName(name) => { - let start = name.span().unwrap_or_else(Span::call_site).start(); - write!( - f, - "{}:{}: undeclared name `{}'", - start.line, start.column, name - ) + write!(f, "undeclared name: `{}`", name) } } } |