On Sun, 15 Feb 2009 01:19:54 +0000, sa wrote: > 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?
fwiw, I was porting some pre D1.0 D program (not mine) to D1.0 today and run into the same problem. I wasted >2 hours to play with dependencies just to end up with no solution. Looks like I have to pull ~8 files into one just to make it compile, but ruin code separation. :(
