$ cat aaa.d
int x;
alias x y;
int y;
$ dmd aaa.d
aaa.d(1): Error: variable aaa.x conflicts with variable aaa.y at aaa.d(3)
It should say:
aaa.d(2): Error: variable aaa.y conflicts with variable aaa.y at aaa.d(3)
dmd resolves the alias to the original symbol when producing the error message, although the alias caused the error (and not the original symbol). Additionally none of the line numbers point to the line causing the error. Think how confusing this could be in larger codebases.