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,
             },
