This is a hack to use IdentifierExp as a dummy expression.

`IdentifierExp` is only generated by the parsing phase, and all other semantic should not generate it. So, indeed normally if its `type` is not NULL, it is the logical error.

On the other hand, IdentifierExp is sometimes used as the placeholder of the *dummy* expression. (See `hasIdentityOpAssign` and `hasIdentityOpEquals`). So this is a _experienced_ hack.