diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index c017c52..cd68d08 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -504,7 +504,7 @@ impl<'cx, 'a, 'i> Parser<'cx, 'a, 'i> {
                     // Empty attribute
                     self.shift(1);
                     match *self.input {
-                        [TokenTree::Delimited(_, ref d), ..] if d.delim == DelimToken::Paren => {
+                        [TokenTree::Delimited(_, ref d), ..] if d.delim == DelimToken::Bracket => {
                             // Toggle the attribute based on a boolean expression
                             self.shift(1);
                             let cond = self.with_rust_parser(d.tts.clone(), RustParser::parse_expr)?;
diff --git a/maud_macros/tests/splices.rs b/maud_macros/tests/splices.rs
index 679f0f7..9270ec0 100644
--- a/maud_macros/tests/splices.rs
+++ b/maud_macros/tests/splices.rs
@@ -41,10 +41,10 @@ fn attributes() {
 fn empty_attributes() {
     let rocks = true;
     let s = html!({
-        input checked?(true) /
-        input checked?(false) /
-        input checked?(rocks) /
-        input checked?(!rocks) /
+        input checked?[true] /
+        input checked?[false] /
+        input checked?[rocks] /
+        input checked?[!rocks] /
     }).into_string();
     assert_eq!(s, concat!(
             r#"<input checked>"#,