Some comments on Stack Overflow question Why doesn\'t the C# compiler stop properties from referring to themselves? regarding warnings got me thinking about old issues that
You aren't necessarily asking for a workaround, but I'm just thinking out loud: You could make the return type of the function Nullable.
At runtime, if the function reflects Nothing, you know the programmer didn't explicitly assign a return value. Of course this only works for functions that don't naturally return Nothing. And it's inefficient in many ways.