Since there are more people here, I fwd the post here to get advice. =============================================== http://d.puremagic.com/issues/show_bug.cgi?id=2666
$ cat vector.d #----------------------------------------------------- module vector; class Vector(E) { E[] data; } $ cat student.d #----------------------------------------------------- module student; import vector; import teacher; // define Student class Student { void ask(Teacher teacher) { } } // define Students alias Vector!(Student) Students; $ cat teacher.d #----------------------------------------------------- module teacher; import student; class Teacher { Students students; } =============================================== $ dmd -c student.d teacher.d(6): Error: forward reference to 'Vector!(Student)' teacher.d(6): Error: Students is used as a type teacher.d(6): variable teacher.Teacher.students voids have no value =============================================== sure I know if I do: $ dmd -c vector.d teacher.d student.d all the three files can be compiled without error. But my question is: why can't file be individually compiled? I think I have the most natural/logical organization of files; if you move the 'Students' alias around, it could get compiled, but what's wrong with my current organization?