fixup! Attribute::name -> path
diff --git a/src/attr.rs b/src/attr.rs
index 653b1c1..14d0ccf 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -6,7 +6,7 @@
 #[derive(Debug, Clone, Eq, PartialEq, Hash)]
 pub struct Attribute {
     pub style: AttrStyle,
-    pub name: Ident,
+    pub path: Path,
     pub tts: Vec<TokenTree>,
     pub is_sugared_doc: bool,
 }
@@ -179,28 +179,28 @@
 #[cfg(feature = "parsing")]
 pub mod parsing {
     use super::*;
-    use ident::parsing::ident;
     use lit::{Lit, StrStyle};
     use mac::{Token, TokenTree};
     use mac::parsing::token_trees;
     use synom::space::{block_comment, whitespace};
+    use ty::parsing::path;
 
     #[cfg(feature = "full")]
     named!(pub inner_attr -> Attribute, alt!(
         do_parse!(
             punct!("#") >>
             punct!("!") >>
-            name_and_tts: delimited!(
+            path_and_tts: delimited!(
                 punct!("["),
-                tuple!(ident, token_trees),
+                tuple!(path, token_trees),
                 punct!("]")
             ) >>
             ({
-                let (name, tts) = name_and_tts;
+                let (path, tts) = path_and_tts;
 
                 Attribute {
                     style: AttrStyle::Inner,
-                    name: name,
+                    path: path,
                     tts: tts,
                     is_sugared_doc: false,
                 }
@@ -212,7 +212,7 @@
             content: take_until!("\n") >>
             (Attribute {
                 style: AttrStyle::Inner,
-                name: "doc".into(),
+                path: "doc".into(),
                 tts: vec![
                     TokenTree::Token(Token::Eq),
                     TokenTree::Token(Token::Literal(Lit::Str(format!("//!{}", content).into(), StrStyle::Cooked))),
@@ -227,7 +227,7 @@
             com: block_comment >>
             (Attribute {
                 style: AttrStyle::Inner,
-                name: "doc".into(),
+                path: "doc".into(),
                 tts: vec![
                     TokenTree::Token(Token::Eq),
                     TokenTree::Token(Token::Literal(Lit::Str(com.into(), StrStyle::Cooked))),
@@ -240,17 +240,17 @@
     named!(pub outer_attr -> Attribute, alt!(
         do_parse!(
             punct!("#") >>
-            name_and_tts: delimited!(
+            path_and_tts: delimited!(
                 punct!("["),
-                tuple!(ident, token_trees),
+                tuple!(path, token_trees),
                 punct!("]")
             ) >>
             ({
-                let (name, tts) = name_and_tts;
+                let (path, tts) = path_and_tts;
 
                 Attribute {
                     style: AttrStyle::Outer,
-                    name: name,
+                    path: path,
                     tts: tts,
                     is_sugared_doc: false,
                 }
@@ -263,7 +263,7 @@
             content: take_until!("\n") >>
             (Attribute {
                 style: AttrStyle::Outer,
-                name: "doc".into(),
+                path: "doc".into(),
                 tts: vec![
                     TokenTree::Token(Token::Eq),
                     TokenTree::Token(Token::Literal(Lit::Str(format!("///{}", content).into(), StrStyle::Cooked))),
@@ -278,7 +278,7 @@
             com: block_comment >>
             (Attribute {
                 style: AttrStyle::Outer,
-                name: "doc".into(),
+                path: "doc".into(),
                 tts: vec![
                     TokenTree::Token(Token::Eq),
                     TokenTree::Token(Token::Literal(Lit::Str(com.into(), StrStyle::Cooked))),
@@ -298,11 +298,21 @@
 
     impl ToTokens for Attribute {
         fn to_tokens(&self, tokens: &mut Tokens) {
-            if let Attribute { style, ref name, ref tts, is_sugared_doc: true } = *self {
-                if name == "doc" && tts.len() == 2 {
-                    match (&tts[0], &tts[1]) {
+            match *self {
+                Attribute {
+                    style,
+                    path: Path { global: false, ref segments },
+                    ref tts,
+                    is_sugared_doc: true,
+                } if segments.len() == 1 &&
+                     segments[0].ident == "doc" &&
+                     segments[0].parameters.is_empty() &&
+                     tts.len() == 2 =>
+                {
+                    match (&self.tts[0], &self.tts[1]) {
                         (&TokenTree::Token(Token::Eq),
-                         &TokenTree::Token(Token::Literal(Lit::Str(ref value, StrStyle::Cooked)))) => {
+                         &TokenTree::Token(Token::Literal(Lit::Str(ref value, StrStyle::Cooked)))) =>
+                        {
                             match style {
                                 AttrStyle::Inner if value.starts_with("//!") => {
                                     tokens.append(&format!("{}\n", value));
@@ -327,6 +337,8 @@
                         _ => {}
                     }
                 }
+
+                _ => {}
             }
 
             tokens.append("#");
@@ -334,7 +346,7 @@
                 tokens.append("!");
             }
             tokens.append("[");
-            self.name.to_tokens(tokens);
+            self.path.to_tokens(tokens);
             tokens.append_all(&self.tts);
             tokens.append("]");
         }
diff --git a/tests/test_generics.rs b/tests/test_generics.rs
index 18ec457..800daa7 100644
--- a/tests/test_generics.rs
+++ b/tests/test_generics.rs
@@ -21,7 +21,7 @@
         ty_params: vec![TyParam {
                             attrs: vec![Attribute {
                                             style: AttrStyle::Outer,
-                                            name: "may_dangle".into(),
+                                            path: "may_dangle".into(),
                                             tts: vec![],
                                             is_sugared_doc: false,
                                         }],
diff --git a/tests/test_macro_input.rs b/tests/test_macro_input.rs
index 2f96b81..4f06a37 100644
--- a/tests/test_macro_input.rs
+++ b/tests/test_macro_input.rs
@@ -31,7 +31,7 @@
         vis: Visibility::Public,
         attrs: vec![Attribute {
             style: AttrStyle::Outer,
-            name: "derive".into(),
+            path: "derive".into(),
             tts: vec![
                 TokenTree::Delimited(Delimited { delim: DelimToken::Paren, tts: vec![
                     TokenTree::Token(Token::Ident(Ident::from("Debug"))),
@@ -106,7 +106,7 @@
         attrs: vec![
             Attribute {
                 style: AttrStyle::Outer,
-                name: "doc".into(),
+                path: "doc".into(),
                 tts: vec![
                     TokenTree::Token(Token::Eq),
                     TokenTree::Token(Token::Literal(Lit::Str(
@@ -118,7 +118,7 @@
             },
             Attribute {
                 style: AttrStyle::Outer,
-                name: "must_use".into(),
+                path: "must_use".into(),
                 tts: vec![],
                 is_sugared_doc: false,
             },