A integer value is implicitly converted to a floating point type (real or shortreal).
This is not necessarily wrong but make sure that it is really what was supposed to be implemented. If so, add an explicit cast.
function automatic f(int i); real r = i; endfunction
function automatic f(int i); real r = real'(i); endfunction