compiler allows parameter named source but translates it to SOURCE

I found a function like this

function do_something(source: address): unit is
block {
   ...
   f(source)
} with ...

and it compiles to Michelson SOURCE. Either the compiler should prevent this from compiling or it should use the address not source.