From a95c78b8bd5ac48d7c645f85443b585bcb4dd989 Mon Sep 17 00:00:00 2001
From: Ulf Lilleengen <ulf.lilleengen@gmail.com>
Date: Thu, 20 May 2021 09:35:56 +0200
Subject: [PATCH] Merge exti macros into one and use simpler recursion

---
 embassy-stm32/gen.py      |  1 -
 embassy-stm32/src/exti.rs | 32 +++++++++++---------------------
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py
index 7c82cd9aa..6cbcde7b1 100644
--- a/embassy-stm32/gen.py
+++ b/embassy-stm32/gen.py
@@ -242,7 +242,6 @@ for chip in chips.values():
                     use super::*;
 
                     impl_exti_irq!({','.join(exti_interrupts)});
-                    impl_exti_init!({','.join(exti_interrupts)});
                 }}
             }}
             mod interrupt_vector {{
diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs
index 9f2401c89..ce6673ba6 100644
--- a/embassy-stm32/src/exti.rs
+++ b/embassy-stm32/src/exti.rs
@@ -215,29 +215,19 @@ impl_exti!(EXTI14, 14);
 impl_exti!(EXTI15, 15);
 
 macro_rules! impl_exti_irq {
-    ($e:ident) => {
-        #[interrupt]
-        unsafe fn $e() {
-            crate::exti::on_irq()
-        }
-    };
-
-    ($e:ident, $($es:ident),+) => {
-        impl_exti_irq! { $e }
-        impl_exti_irq! { $($es),+ }
-    };
-}
-
-macro_rules! impl_exti_init {
-    ($e:ident) => {
-        crate::interrupt::$e::steal().enable();
-    };
-
-    ($e:ident, $($es:ident),+) => {
+    ($($e:ident),+) => {
         /// safety: must be called only once
         pub(crate) unsafe fn init() {
-            impl_exti_init! { $e }
-            impl_exti_init! { $($es),+ }
+            $(
+                crate::interrupt::$e::steal().enable();
+            )+
         }
+
+        $(
+            #[interrupt]
+            unsafe fn $e() {
+                crate::exti::on_irq()
+            }
+        )+
     };
 }