Bug 16995 – __traits(getUnittests) doesn't work with separate compilation
Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2016-12-20T18:04:34Z
Last change time
2018-02-01T23:17:01Z
Assigned to
No Owner
Creator
Atila Neves
Comments
Comment #0 by atila.neves — 2016-12-20T18:04:34Z
foo.d:
-----
void main() {
import bar;
foreach(ut; __traits(getUnitTests, bar)) ut();
}
-----
bar.d:
-----
unittest { assert(1 == 2); }
-----
# compile all at once
dmd -unittest foo.d bar.d # fine
# compile separately
dmd -c -unittest foo.d
dmd -c -unittest bar.d
dmd foo.o bar.o
foo.o:foo.d:function _Dmain: error: undefined reference to '_D3bar16__unittestL2_531FZv'
collect2: error: ld returned 1 exit status
--- errorlevel 1
objdump shows me that bar.o has a '_D3bar14__unittestL2_1FZv' symbol, which is nearly, but not quite, what foo.o is trying to call.