[Bug 139] New: Forward reference of enum type doesn't work or crashes compiler
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat May 13 14:01:47 PDT 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=139
Summary: Forward reference of enum type doesn't work or crashes
compiler
Product: D
Version: 0.157
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: ice-on-valid-code, rejects-valid
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: smjg at iname.com
An enum type cannot be forward-referenced at either global or class scope.
----------
D3DTRANSFORMSTATETYPE D3DTS_WORLDMATRIX(int index) {
return index + 256;
}
enum : D3DTRANSFORMSTATETYPE {
D3DTS_WORLD = 256,
D3DTS_WORLD1,
D3DTS_WORLD2,
D3DTS_WORLD3
}
enum D3DTRANSFORMSTATETYPE {
D3DTS_VIEW = 2,
D3DTS_PROJECTION,
D3DTS_TEXTURE0 = 16,
D3DTS_TEXTURE1,
D3DTS_TEXTURE2,
D3DTS_TEXTURE3,
D3DTS_TEXTURE4,
D3DTS_TEXTURE5,
D3DTS_TEXTURE6,
D3DTS_TEXTURE7, // = 23
D3DTS_FORCE_DWORD = 0xffffffff
}
----------
enum D3DTRANSFORMSTATETYPE is forward referenced
----------
DMD caused an invalid page fault in
module DMD.EXE at 0167:0040b077.
Registers:
EAX=007407cc CS=0167 EIP=0040b077 EFLGS=00010216
EBX=0074b2cc SS=016f ESP=0072fd20 EBP=00740714
ECX=00000000 DS=016f ESI=00740714 FS=4be7
EDX=0072fd0c ES=016f EDI=004b8664 GS=45fe
Bytes at CS:EIP:
8b 11 ff 52 44 59 c3 90 90 51 8b 41 24 8b 48 38
Stack dump:
0074bf2c 0040365d 0074c42c 0074b2cc 00740714 00000002 004a37af 00749894
0074c42c 0074b2cc 00000001 0000000c 0074b2cc 00000000 0043a4eb 0074c42c
----------
I've established that the function triggers the error message, and the use as
an enum base triggers the IPF. Various other uses, such as declaring a global
variable or constant of the enum type, also trigger the error message. Some of
them have tests in DStress under enum_* and forward_reference_*, but none I can
find at the moment are for the cases of the above example.
--
More information about the Digitalmars-d-bugs
mailing list