Steps to reproduce:
1. Create 2 files (Site.d and Tools.d):
[Site.d]
module Site;
import Tools;
void test(List!(char) list) {}
[Tools.d]
module Tools;
struct List(T) {
interface A {}
}
int main(char[][] args) {
List!(char) list;
return 0;
}
2. Now compile using the following commands:
# dmd.exe -c Site.d
# dmd.exe -c Tools.d
# dmd.exe bug.exe Site.obj Tools.obj
... should report error "Previous definition different"
I market this bug as blocker, because I know of no workaround (at least one that would work with compiling files one by one).
Comment #1 by smjg — 2006-09-27T15:58:32Z
So the error message is just "Previous definition different" with no indication of what or where???
Comment #2 by boris.kolar — 2006-09-28T05:15:03Z
Full compiler output:
# dmd.exe -v -c Site.d
parse Site
semantic Site
semantic2 Site
semantic3 Site
code Site
generating code for function 'test'
# dmd.exe -v -c Tools.d
parse Tools
semantic Tools
semantic2 Tools
semantic3 Tools
code Tools
generating code for function 'main'
# dmd.exe -v bug.exe Site.obj Tools.obj
C:\Home\Programs\D\dmd\bin\..\..\dm\bin\link.exe Site+Tools,Bug.exe,,user32+kernel32/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
Tools.obj(Tools) Offset 00178H Record Type 0091
Error 1: Previous Definition Different : __Interface_5Tools11__T4ListTaZ4List1A
--- errorlevel 1