January 12, 2005 Assertion failure: mtype.c 3020 (among other things) - forward referencing enum | ||||
---|---|---|---|---|
| ||||
Using DMD 0.110, Windows 98SE. ---------- class Qwert { YUIOP asdfg; } enum YUIOP { HJKL, ZXCVB, NM } ---------- enum YUIOP is forward referenced enum YUIOP is forward referenced D:\My Documents\Programming\D\Tests\bugs\enum_forward.d(1): enum YUIOP is forward referenced Assertion failure: 'sym->memtype' on line 3020 in file 'mtype.c' ---------- It seems to vary whether the compiler hangs, crashes with an illegal operation or just exits 'normally' having given me this. The assertion failure seems to happen only if it's used in a class, struct or union. The following uses of the forward-referenced enum simply give an error "enum YUIOP is forward referenced" without crashing the compiler: - global variable - return type of global/member function - parameter of global/member function - alias or typedef of such a function Firstly, this is yet another error that's missing its filename and line number; secondly, it ought to work. (I guess the long-term goal is to eradicate the words "forward referenced" from DMD's repertoire of errors?) These uses give no error at all: - local variable, whether static or not - return or parameter type of function nested within a function - alias or typedef of the enum itself (though trying to use the alias/typedef before the original enum has been declared triggers the same bugs) - using one of the enum values - apparently anything at all if the enum has an underlying type specified Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit. |
January 12, 2005 Re: Assertion failure: mtype.c 3020 (among other things) - forward referencing enum | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stewart Gordon | -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Added to DStress as http://dstress.kuehne.cn/run/forward_reference_07.d http://dstress.kuehne.cn/run/forward_reference_08.d http://dstress.kuehne.cn/run/forward_reference_09.d http://dstress.kuehne.cn/run/forward_reference_10.d http://dstress.kuehne.cn/run/forward_reference_11.d Thomas Stewart Gordon schrieb am Wed, 12 Jan 2005 10:11:09 +0000: > Using DMD 0.110, Windows 98SE. > > ---------- > class Qwert { > YUIOP asdfg; > } > > enum YUIOP { HJKL, ZXCVB, NM } > ---------- > enum YUIOP is forward referenced > enum YUIOP is forward referenced > D:\My Documents\Programming\D\Tests\bugs\enum_forward.d(1): enum YUIOP > is forward referenced > Assertion failure: 'sym->memtype' on line 3020 in file 'mtype.c' > ---------- > > It seems to vary whether the compiler hangs, crashes with an illegal operation or just exits 'normally' having given me this. > > The assertion failure seems to happen only if it's used in a class, struct or union. The following uses of the forward-referenced enum simply give an error "enum YUIOP is forward referenced" without crashing the compiler: > > - global variable > - return type of global/member function > - parameter of global/member function > - alias or typedef of such a function > > Firstly, this is yet another error that's missing its filename and line number; secondly, it ought to work. (I guess the long-term goal is to eradicate the words "forward referenced" from DMD's repertoire of errors?) > > These uses give no error at all: > > - local variable, whether static or not > - return or parameter type of function nested within a function > - alias or typedef of the enum itself (though trying to use the > alias/typedef before the original enum has been declared triggers the > same bugs) > - using one of the enum values > - apparently anything at all if the enum has an underlying type specified > > Stewart. > -----BEGIN PGP SIGNATURE----- iD8DBQFB5Skq3w+/yD4P9tIRAqKMAKDKDVudJFBMYmXlOykoYEimBEnVEgCffF46 UokjPBjrBKO7L0gRLlZn/30= =JhNf -----END PGP SIGNATURE----- |
Copyright © 1999-2021 by the D Language Foundation