Test macro argument list formatting errors
diff --git a/tests/sqlparser_duckdb.rs b/tests/sqlparser_duckdb.rs
index 02d74c4..216d514 100644
--- a/tests/sqlparser_duckdb.rs
+++ b/tests/sqlparser_duckdb.rs
@@ -947,3 +947,32 @@
         .verified_stmt("CREATE OR REPLACE TEMPORARY MACRO nothing() AS TABLE SELECT 1");
     duckdb().one_statement_parses_to("CREATE FUNCTION add() AS 1", "CREATE MACRO add() AS 1");
 }
+
+#[test]
+fn display_create_macro_propagates_argument_list_errors() {
+    use core::fmt::{self, Write};
+
+    struct RejectingWriter(char);
+
+    impl Write for RejectingWriter {
+        fn write_str(&mut self, value: &str) -> fmt::Result {
+            if value.contains(self.0) {
+                Err(fmt::Error)
+            } else {
+                Ok(())
+            }
+        }
+    }
+
+    for sql in [
+        "CREATE MACRO four() AS 4",
+        "CREATE MACRO add(a, b) AS a + b",
+        "CREATE MACRO nothing() AS TABLE SELECT 1",
+    ] {
+        let statement = duckdb_and_generic().verified_stmt(sql);
+        for rejected in ['(', ')'] {
+            let mut writer = RejectingWriter(rejected);
+            assert_eq!(write!(writer, "{statement}"), Err(fmt::Error));
+        }
+    }
+}