Match argument order between attr parser and Pair::new
diff --git a/syntax/attrs.rs b/syntax/attrs.rs
index 967d9fb..7dab263 100644
--- a/syntax/attrs.rs
+++ b/syntax/attrs.rs
@@ -11,9 +11,9 @@
pub doc: Option<&'a mut Doc>,
pub derives: Option<&'a mut Vec<Derive>>,
pub repr: Option<&'a mut Option<Atom>>,
+ pub namespace: Option<&'a mut Namespace>,
pub cxx_name: Option<&'a mut Option<Ident>>,
pub rust_name: Option<&'a mut Option<Ident>>,
- pub namespace: Option<&'a mut Namespace>,
}
pub(super) fn parse(cx: &mut Errors, attrs: &[Attribute], mut parser: Parser) {
@@ -48,6 +48,16 @@
}
Err(err) => return cx.push(err),
}
+ } else if attr.path.is_ident("namespace") {
+ match parse_namespace_attribute.parse2(attr.tokens.clone()) {
+ Ok(attr) => {
+ if let Some(namespace) = &mut parser.namespace {
+ **namespace = attr;
+ continue;
+ }
+ }
+ Err(err) => return cx.push(err),
+ }
} else if attr.path.is_ident("cxx_name") {
match parse_function_alias_attribute.parse2(attr.tokens.clone()) {
Ok(attr) => {
@@ -68,16 +78,6 @@
}
Err(err) => return cx.push(err),
}
- } else if attr.path.is_ident("namespace") {
- match parse_namespace_attribute.parse2(attr.tokens.clone()) {
- Ok(attr) => {
- if let Some(namespace) = &mut parser.namespace {
- **namespace = attr;
- continue;
- }
- }
- Err(err) => return cx.push(err),
- }
}
return cx.error(attr, "unsupported attribute");
}
@@ -122,6 +122,12 @@
))
}
+fn parse_namespace_attribute(input: ParseStream) -> Result<Namespace> {
+ input.parse::<Token![=]>()?;
+ let namespace = input.parse::<Namespace>()?;
+ Ok(namespace)
+}
+
fn parse_function_alias_attribute(input: ParseStream) -> Result<Ident> {
input.parse::<Token![=]>()?;
if input.peek(LitStr) {
@@ -131,9 +137,3 @@
input.parse()
}
}
-
-fn parse_namespace_attribute(input: ParseStream) -> Result<Namespace> {
- input.parse::<Token![=]>()?;
- let namespace = input.parse::<Namespace>()?;
- Ok(namespace)
-}
diff --git a/syntax/parse.rs b/syntax/parse.rs
index b229d8b..20f79ec 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -377,17 +377,17 @@
namespace: &Namespace,
) -> Result<Api> {
let mut doc = Doc::new();
+ let mut namespace = namespace.clone();
let mut cxx_name = None;
let mut rust_name = None;
- let mut namespace = namespace.clone();
attrs::parse(
cx,
&foreign_fn.attrs,
attrs::Parser {
doc: Some(&mut doc),
+ namespace: Some(&mut namespace),
cxx_name: Some(&mut cxx_name),
rust_name: Some(&mut rust_name),
- namespace: Some(&mut namespace),
..Default::default()
},
);