Fix span placement on ForeignName parse error
diff --git a/syntax/names.rs b/syntax/names.rs
index b2ae013..cb6ace5 100644
--- a/syntax/names.rs
+++ b/syntax/names.rs
@@ -3,7 +3,7 @@
 use proc_macro2::{Ident, Span};
 use std::fmt::{self, Display};
 use std::iter;
-use syn::parse::Result;
+use syn::parse::{Error, Result};
 use syn::punctuated::Punctuated;
 
 #[derive(Clone)]
@@ -53,9 +53,13 @@
     pub fn parse(text: &str, span: Span) -> Result<Self> {
         // TODO: support C++ names containing whitespace (`unsigned int`) or
         // non-alphanumeric characters (`operator++`).
-        let ident: Ident = syn::parse_str(text)?;
-        let text = ident.to_string();
-        Ok(ForeignName { text, span })
+        match syn::parse_str::<Ident>(text) {
+            Ok(ident) => {
+                let text = ident.to_string();
+                Ok(ForeignName { text, span })
+            }
+            Err(err) => Err(Error::new(span, err)),
+        }
     }
 }