Thread overview
recursive template sends dmd on vacation...
Mar 30, 2005
Regan Heath
Mar 30, 2005
Regan Heath
Re: [OT] recursive template sends dmd on vacation...
Apr 01, 2005
Thomas Kuehne
Apr 27, 2005
Thomas Kuehne
May 10, 2005
Walter
May 10, 2005
Sean Kelly
March 30, 2005
--[test34.d]--
import std.stdio;

template Blah(int a, alias B)
{
  mixin Blah!(a-1, B);
}

template Blah(int a:0, alias B)
{
  writefln(B);
}

void main()
{
  int a;
  mixin Blah!(5,a);
}

C:\Library\D\src\temp>dmd test34.d
test34.d(5): mixin test34.main.Blah!(5,a) Blah__5__10__Dmain1ai.Blah!(...) Blah_
_4__10__Dmain1ai.Blah!(3,a) Blah__3__10__Dmain1ai.Blah!(2,a) Blah__2__10__Dmain1
ai.Blah!(1,a) Blah__1__10__Dmain1ai.Blah!(0,a) matches more than one template de
claration

Regan
March 30, 2005
On Wed, 30 Mar 2005 22:23:46 +1200, Regan Heath <regan@netwin.co.nz> wrote:
> --[test34.d]--
> import std.stdio;
>
> template Blah(int a, alias B)
> {
>    mixin Blah!(a-1, B);
> }
>
> template Blah(int a:0, alias B)
> {
>    writefln(B);
> }
>
> void main()
> {
>    int a;
>    mixin Blah!(5,a);
> }
>
> C:\Library\D\src\temp>dmd test34.d
> test34.d(5): mixin test34.main.Blah!(5,a) Blah__5__10__Dmain1ai.Blah!(...) Blah_
> _4__10__Dmain1ai.Blah!(3,a) Blah__3__10__Dmain1ai.Blah!(2,a) Blah__2__10__Dmain1
> ai.Blah!(1,a) Blah__1__10__Dmain1ai.Blah!(0,a) matches more than one template de
> claration

I forgot to say, at this point dmd continues to run, use cpu/memory and does not come back.. at least for as long as I cared to wait which was a minute or two.

Regan
April 01, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Regan Heath schrieb am Wed, 30 Mar 2005 22:37:20 +1200:
> On Wed, 30 Mar 2005 22:23:46 +1200, Regan Heath <regan@netwin.co.nz> wrote:

<snip>

> I forgot to say, at this point dmd continues to run, use cpu/memory and does not come back.. at least for as long as I cared to wait which was a minute or two.

Is there any way to call a programm with a given cycle-limit instead of the setitimer kludge?

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCTJP23w+/yD4P9tIRAiH4AKDBAzuC9tpgf7sXrXXhxvvfsKpXgQCgjezC
2tb/Un5E191UGt4vFH7Q8CM=
=JjOi
-----END PGP SIGNATURE-----
April 27, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Regan Heath schrieb am Wed, 30 Mar 2005 22:37:20 +1200:
> On Wed, 30 Mar 2005 22:23:46 +1200, Regan Heath <regan@netwin.co.nz> wrote:
>> --[test34.d]--
>> import std.stdio;
>>
>> template Blah(int a, alias B)
>> {
>>    mixin Blah!(a-1, B);
>> }
>>
>> template Blah(int a:0, alias B)
>> {
>>    writefln(B);
>> }
>>
>> void main()
>> {
>>    int a;
>>    mixin Blah!(5,a);
>> }
>>
>> C:\Library\D\src\temp>dmd test34.d
>> test34.d(5): mixin test34.main.Blah!(5,a)
>> Blah__5__10__Dmain1ai.Blah!(...) Blah_
>> _4__10__Dmain1ai.Blah!(3,a) Blah__3__10__Dmain1ai.Blah!(2,a)
>> Blah__2__10__Dmain1
>> ai.Blah!(1,a) Blah__1__10__Dmain1ai.Blah!(0,a) matches more than one
>> template de
>> claration
>
> I forgot to say, at this point dmd continues to run, use cpu/memory and does not come back.. at least for as long as I cared to wait which was a minute or two.

I finally added the time-out code to DStress. http://dstress.kuehne.cn/nocompile/bug_20050330_A.d http://dstress.kuehne.cn/run/bug_20050330_B.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCb4Sz3w+/yD4P9tIRAtq8AJ0UrRkZQ4tPOIurI4Cb0gbdT9L0TACguSv0
U7ZcP7lEWypY3lgT75bVWdw=
=SQgO
-----END PGP SIGNATURE-----
May 10, 2005
"Regan Heath" <regan@netwin.co.nz> wrote in message news:opsof4hwgy23k2f5@nrage.netwin.co.nz...
> --[test34.d]--
> import std.stdio;
>
> template Blah(int a, alias B)
> {
>    mixin Blah!(a-1, B);
> }
>
> template Blah(int a:0, alias B)
> {
>    writefln(B);
> }
>
> void main()
> {
>    int a;
>    mixin Blah!(5,a);
> }
>
> C:\Library\D\src\temp>dmd test34.d
> test34.d(5): mixin test34.main.Blah!(5,a) Blah__5__10__Dmain1ai.Blah!(...)
> Blah_
> _4__10__Dmain1ai.Blah!(3,a) Blah__3__10__Dmain1ai.Blah!(2,a)
> Blah__2__10__Dmain1
> ai.Blah!(1,a) Blah__1__10__Dmain1ai.Blah!(0,a) matches more than one
> template de
> claration

The recursive problem is now fixed, but the example isn't syntactically correct. This works:

import std.stdio;

template Blah(int a, alias B)
{
   mixin Blah!(a-1, B);
}

template Blah(int a:0, alias B)
{
    void foo()
    {   writefln(B);
    }
}

void main()
{
   int a = 3;
   mixin Blah!(5,a);

   foo();
}



May 10, 2005
In article <d5pg0t$dqt$1@digitaldaemon.com>, Walter says...
>
>The recursive problem is now fixed, but the example isn't syntactically correct.

Related question--what is the recursion limit for template code?  Is it something I could theoretically run up against calculating Fibonacci numbers at compile-time or anything like that?


Sean