----- linkfail_a.d ----- import linkfail_b; void main() {} enum Qwert : byte { YUIOP, ASDFG } struct Hjkl { Qwert zxcvb() { return Qwert.YUIOP; } } ----- linkfail_b.d ----- import linkfail_a; void nm() { try { qaz(Hjkl.init.zxcvb); } catch (Object e) {} } void qaz(Qwert wsx) {} const int[] edc = [ Qwert.YUIOP: 42, 105 ]; ---------- Fails: dmd -c linkfail_a.d dmd -c linkfail_b.d dmd linkfail_a.obj linkfail_b.obj Fails: dmd -c linkfail_b.d dmd linkfail_a.d linkfail_b.obj Works: dmd linkfail_a.d linkfail_b.d Both failure cases give the same error: ---------- d:\dmd\bin\..\..\dm\bin\link.exe linkfail_a+linkfail_b,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved linkfail_b.obj(linkfail_b) Error 42: Symbol Undefined _D10linkfail_a4Hjkl5zxcvbMFZE10linkfail_a5Qwert --- errorlevel 1 ---------- This bites the date/time code in my utility library. At least, I *think* this is a regression....
I can confirm that this was failing in 1.023, but had been working in 1.020. It now works in both D1 and D2. Was fixed somewhere between 1.024 and 1.036 (works in 1.036).