Unify the error modules
diff --git a/src/lib.rs b/src/lib.rs
index 809bb10..4648e37 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -582,11 +582,13 @@
 
 #[cfg(feature = "parsing")]
 use synom::{Parser, Synom};
+#[cfg(feature = "parsing")]
+use proc_macro2::Span;
 
 #[cfg(feature = "parsing")]
-mod error;
+pub mod error;
 #[cfg(feature = "parsing")]
-use error::ParseError;
+use error::Error;
 
 // Not public API.
 #[cfg(feature = "parsing")]
@@ -645,7 +647,7 @@
     feature = "parsing",
     feature = "proc-macro"
 ))]
-pub fn parse<T>(tokens: proc_macro::TokenStream) -> Result<T, ParseError>
+pub fn parse<T>(tokens: proc_macro::TokenStream) -> Result<T, Error>
 where
     T: Synom,
 {
@@ -665,13 +667,13 @@
 ///
 /// *This function is available if Syn is built with the `"parsing"` feature.*
 #[cfg(feature = "parsing")]
-pub fn parse2<T>(tokens: proc_macro2::TokenStream) -> Result<T, ParseError>
+pub fn parse2<T>(tokens: proc_macro2::TokenStream) -> Result<T, Error>
 where
     T: Synom,
 {
     let parser = T::parse;
     parser.parse2(tokens).map_err(|err| match T::description() {
-        Some(s) => ParseError::new(format!("failed to parse {}: {}", s, err)),
+        Some(s) => Error::new(Span::call_site(), format!("failed to parse {}: {}", s, err)),
         None => err,
     })
 }
@@ -705,10 +707,10 @@
 /// # fn main() { run().unwrap() }
 /// ```
 #[cfg(feature = "parsing")]
-pub fn parse_str<T: Synom>(s: &str) -> Result<T, ParseError> {
+pub fn parse_str<T: Synom>(s: &str) -> Result<T, Error> {
     match s.parse() {
         Ok(tts) => parse2(tts),
-        Err(_) => Err(ParseError::new("error while lexing input string")),
+        Err(_) => Err(Error::new(Span::call_site(), "error while lexing input string")),
     }
 }
 
@@ -753,7 +755,7 @@
 /// # fn main() { run().unwrap() }
 /// ```
 #[cfg(all(feature = "parsing", feature = "full"))]
-pub fn parse_file(mut content: &str) -> Result<File, ParseError> {
+pub fn parse_file(mut content: &str) -> Result<File, Error> {
     // Strip the BOM if it is present
     const BOM: &'static str = "\u{feff}";
     if content.starts_with(BOM) {