This is not true. Consider the map function of a typical functional language with parametric polymorphism:
map : (a -> b) -> [a] -> [b]
That signature is complete, it covers everything there is to know about the function. And, except for trivial implementations, there is no way to implement it wrongly.
In some cases, one can even rule out trivial implementations and infer the correct implementations from the type signature alone.
In any case, there is no "semantically wrong" input to such a function. It is just a function and totally agnostic regarding your use case.