www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - interpret.c assertion failure on enum.stringof mixin

reply strtr <strtr spam.com> writes:
enum { E };
void _mixin() {
	writefln( E.stringof );
}
void func() {
	mixin(_mixin);
}
Assertion failure: '!dim || (parameters && (parameters->dim == dim))' on line
140 in file 'interpret.c'

At least I got a line number this time :)
Feb 06 2010
parent reply strtr <strtr spam.com> writes:
strtr Wrote:

 enum { E };
 void _mixin() {
 	writefln( E.stringof );
 }
 void func() {
 	mixin(_mixin);
 }
 Assertion failure: '!dim || (parameters && (parameters->dim == dim))' on line
140 in file 'interpret.c'
 
 At least I got a line number this time :)
Had nothing to do with the enum :) void _mixin() { writefln( "" ); } void func() { mixin(_mixin); }
Feb 07 2010
next sibling parent strtr <strtr spam.com> writes:
strtr Wrote:

 strtr Wrote:
 
 enum { E };
 void _mixin() {
 	writefln( E.stringof );
 }
 void func() {
 	mixin(_mixin);
 }
 Assertion failure: '!dim || (parameters && (parameters->dim == dim))' on line
140 in file 'interpret.c'
 
 At least I got a line number this time :)
Had nothing to do with the enum :) void _mixin() { writefln( "" ); } void func() { mixin(_mixin); }
mixins seem te choke on errors :( enum E { A = 0, B, C } char[] _mixin() { return format( "s = ", (cast(E)1).stringof, ";" ); } void func() { char[] s; mixin ( _mixin() ); } Same assertion failure. Anyways, how do I get the string "E.A" out of the int 0 ?
Feb 07 2010
prev sibling parent reply Don <nospam nospam.com> writes:
strtr wrote:
 strtr Wrote:
 
 enum { E };
 void _mixin() {
 	writefln( E.stringof );
 }
 void func() {
 	mixin(_mixin);
 }
 Assertion failure: '!dim || (parameters && (parameters->dim == dim))' on line
140 in file 'interpret.c'

 At least I got a line number this time :)
Wow, seems like you and the compiler are at war...
 Had nothing to do with the enum :)
 
 void _mixin() {
 	writefln( "" );
 }
 void func() {
 	mixin(_mixin);
 }
Please put this into bugzilla. Title "ICE(interpret.c): mixin non-CTFE function" or similar.
Feb 07 2010
parent strtr <strtr spam.com> writes:
Don Wrote:

 Wow, seems like you and the compiler are at war...
 
I had an even more horrid dmd crash some time ago, removing a circular selective import seemed to fix it. But I'm not sure and can't replicate it any more :(
 
 Please put this into bugzilla. Title "ICE(interpret.c): mixin non-CTFE 
 function" or similar.
Done. Ah, ICE = Internal Compiler Error :) And, format isn't a CTFE-function? Could you maybe also help me with this one? enum E { A = 0, B, C } char[] _mixin(int i) { return "e = " ~ (cast(E)i).stringof ~ ";"; } void main() { E e; mixin( _mixin(1) ); } // Error: type E is not an expression I just want to use a var to index an enum and then get its .stringof :)
Feb 08 2010