With the current git head (and 4.3): $ ./bash -c 'eval() { echo function; }; set -o posix; type eval; eval echo not function' eval is a function eval () { echo function } not function $ ./bash --version GNU bash, version 4.4.0(1)-alpha (x86_64-unknown-linux-gnu) [...]
"type eval" should return eval is a shell builtin there since the special builtin takes precedence over functions in POSIX mode. (actually, having "eval is a special shell builtin" like in dash/mksh/ksh93/yash would be nice) -- Stephane