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()
         },
     );