Bug 1676 – Undefined symbol at linking with circular import and enum

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
x86
OS
Windows
Creation time
2007-11-16T18:42:00Z
Last change time
2014-02-24T15:32:46Z
Keywords
link-failure
Assigned to
nobody
Creator
smjg

Comments

Comment #0 by smjg — 2007-11-16T18:42:04Z
----- 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....
Comment #1 by clugdbug — 2009-09-15T01:43:39Z
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).