This isn't actually an issue with your macro - it's an issue with the expression it generates. See this example.
The problem in this situation is that the compiler has no way to infer the type of the variable x in the Some(x) pattern. Even though that pattern can be proven to be unreachable in this specific instance, that's not true in general, and the compiler is concerned about the general case.
In order to make this work, the compiler needs a type hint to understand what the Some case could carry. Fixed example.
Your macro would work fine if the parameter were anything that let the compiler infer the type. If it's a literal None, though, that information doesn't exist. Try passing None with an explicit type parameter instead.