diff --git a/src/attr.rs b/src/attr.rs
index 06af8a5..3c9e625 100644
--- a/src/attr.rs
+++ b/src/attr.rs
@@ -133,6 +133,17 @@
                         eq_token: Token![=]([tts[0].span]),
                         lit: Lit::new(lit.clone(), tts[1].span),
                     }));
+                } else if let TokenNode::Term(ref term) = tts[1].kind {
+                    match term.as_str() {
+                        v @ "true" | v @ "false" => {
+                            return Some(Meta::NameValue(MetaNameValue {
+                                ident: *name,
+                                eq_token: Token![=]([tts[0].span]),
+                                lit: Lit::Bool(LitBool { value: v == "true", span: tts[1].span }),
+                            }));
+                        },
+                        _ => {}
+                    }
                 }
             }
         }
@@ -161,6 +172,18 @@
                             lit: Lit::new(lit.clone(), tts[2].span),
                         };
                         return Some((Meta::NameValue(pair).into(), &tts[3..]));
+                    } else if let TokenNode::Term(ref term) = tts[2].kind {
+                        match term.as_str() {
+                            v @ "true" | v @ "false" => {
+                                let pair = MetaNameValue {
+                                    ident: Ident::new(sym.as_str(), tts[0].span),
+                                    eq_token: Token![=]([tts[1].span]),
+                                    lit: Lit::Bool(LitBool { value: v == "true", span: tts[2].span }),
+                                };
+                                return Some((Meta::NameValue(pair).into(), &tts[3..]));
+                            },
+                            _ => {}
+                        }
                     }
                 }
             }
diff --git a/tests/test_meta_item.rs b/tests/test_meta_item.rs
index 231ba45..0fff6d2 100644
--- a/tests/test_meta_item.rs
+++ b/tests/test_meta_item.rs
@@ -40,6 +40,26 @@
 }
 
 #[test]
+fn test_meta_item_bool_value() {
+    run_test(
+        "#[foo = true]",
+        MetaNameValue {
+            ident: "foo".into(),
+            eq_token: Default::default(),
+            lit: Lit::Bool(LitBool { value: true, span: Span::def_site() }),
+        },
+    );
+    run_test(
+        "#[foo = false]",
+        MetaNameValue {
+            ident: "foo".into(),
+            eq_token: Default::default(),
+            lit: Lit::Bool(LitBool { value: false, span: Span::def_site() }),
+        },
+    )
+}
+
+#[test]
 fn test_meta_item_list_lit() {
     run_test(
         "#[foo(5)]",
@@ -84,6 +104,26 @@
 }
 
 #[test]
+fn test_meta_item_list_bool_value() {
+    run_test(
+        "#[foo(bar = true)]",
+        MetaList {
+            ident: "foo".into(),
+            paren_token: Default::default(),
+            nested: punctuated![
+                NestedMeta::Meta(
+                    MetaNameValue {
+                        ident: "bar".into(),
+                        eq_token: Default::default(),
+                        lit: Lit::Bool(LitBool { value: true, span: Span::def_site() }),
+                    }.into(),
+                ),
+            ],
+        },
+    )
+}
+
+#[test]
 fn test_meta_item_multiple() {
     run_test(
         "#[foo(word, name = 5, list(name2 = 6), word2)]",
