digitalmars.D - compiler in infinite loop
- rm (22/22) Oct 06 2006 hi,
 - rm (26/26) Oct 06 2006 but this will work,
 - Thomas Kuehne (11/33) Oct 06 2006 -----BEGIN PGP SIGNED MESSAGE-----
 
hi,
this code puts the dmd compiler (v168) into an infinite loop,
and it's caused by having a member in this template that has the same
name as the template.
bye,
roel
===============================================
private import std.stdio;
template TValue(int i:1)
{
	pragma(msg,"last instantiation!!!");
	const int TValue = 1;
}
template TValue(int i)
{	
	pragma(msg,"instantiating...");
	const int TValue = i * TValue!(i-1);
}
void main()
{
	writefln( TValue!(3) );
}
 Oct 06 2006
but this will work,
so it's the specialisation that is troubling
bye,
rm
===================================================================
private import std.stdio;
/*template TValue(int i:1)
{
	pragma(msg,"last instantiation ... 1 !!!");
	const int TValue = 1;
}*/
template TValue(int i)
{
	static if (i==2)	pragma(msg,"instantiating ... 2");
	static if (i==3)	pragma(msg,"instantiating ... 3");
	static if (i==4)	pragma(msg,"instantiating ... 4");
	static if (i==5)	pragma(msg,"instantiating ... 5");
	static if (i==1)
		const int TValue = 1;
	else
		const int TValue = i * TValue!(i-1);
}
void main()
{
	writefln( TValue!(5) );
}
 Oct 06 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
rm schrieb am 2006-10-06:
 hi,
 this code puts the dmd compiler (v168) into an infinite loop,
 and it's caused by having a member in this template that has the same
 name as the template.
 bye,
 roel
===============================================
 private import std.stdio;
 template TValue(int i:1)
 {
 	pragma(msg,"last instantiation!!!");
 	const int TValue = 1;
 }
 template TValue(int i)
 {	
 	pragma(msg,"instantiating...");
 	const int TValue = i * TValue!(i-1);
 }
 void main()
 {
 	writefln( TValue!(3) );
 }
Known issue:
http://d.puremagic.com/issues/show_bug.cgi?id=351
Thomas
-----BEGIN PGP SIGNATURE-----
iD8DBQFFJqUsLK5blCcjpWoRAgA5AJsFbPLVZIj07gs+9kNk+EHpsuMfgACfegPB
JwxjmWP6kYuZn8gBpZqwqO8=
=Rohi
-----END PGP SIGNATURE-----
 Oct 06 2006








 
 
 
 rm <roel.mathys gmail.com> 