D - assert in compiler and crashes
walter; when I try to compile the following code with 0.50 alpha
I get
Assertion failure: '0' on line 918 in file 'func.c'
(uncomment the comment and the compiler crashes very likely I've got the
template specialation wrong)
//template delegatehelper( P, RV, T : RV (*T)( P ) )
template delegatehelper( P, RV, T : RV (*)( P ) )
{
class FcHelper
{
T toCall;
this( T funcPtr ) { toCall = funcPtr; }
RV evoke( P param ) { return toCall( param ); }
}
}
template autocloser( T, P )
{
auto class MyBlock
{
bit delegate ( T ) closeDelegate;
bit (*closeFuncPtr)( T );
closeDelegate close;
T item;
this( operationDelegate close0, P param, out T made )
{
mad = item = new T( param );
close = close0;
}
this( closeFuncPtr close0, P param, out T made )
{
instance delegatehelper( T, bit, closeFuncPtr ) dh;
dh.FcHelper conv = new dh.FcHelper( close0 );
this( &conv.evoke, param, made );
}
~this()
{
close( item );
}
}
}
class MyFile { int i; this( int ii ) { i = ii; printf( "OPEN\n" ); } }
bit closeIt( MyFile f )
{
printf( "CLOSE\n" );
return true;
}
int main( char[][] args )
{
instance autocloser( MyFile, int ) closer;
MyFile res;
printf("Starting ...\n");
{
auto closer.MyBlock autoCloser = new closer.MyBlock( &closeIt, 3, res );
printf("[doing stuff]\n");
}
printf("end.\n");
return 0;
}
Jan 20 2003
traced to destructor
the following will compile if you comment out the destructor
template foo( T )
{
class failsToCompile
{
this( T item ) { }
~this()
{
}
}
}
instance foo( int ) myfoo;
int main( char[][] args )
{
return 0;
}
Jan 20 2003








"Mike Wynn" <mike.wynn l8night.co.uk>