digitalmars.D.bugs - Internal error with templates
- Ivan Senji (21/21) May 02 2004 I was trying to figure out how to use templates with alias parameters
- Ivan Senji (40/61) May 03 2004 In this code:
- Craig Pennington (20/31) May 05 2004 I don't get an error, but the assignment doesn't happen without the
- Ivan Senji (10/40) May 05 2004 Then it is probbably a 0.86 bug, Walter fixed it!
I was trying to figure out how to use templates with alias parameters
and i wasn't able to figure it out, but i got this internal error
Internal error: ..\ztc\out.c 1127
with this code:
import std.stream;
import std.c.stdio;
alias std.stream.stdout stdout;
template Foo(alias T)
{
void Foo()
{
stdout.writeLine(T);
}
}
int main ( char [] [] args )
{
char[] x = "hello";
alias Foo!(x) fooinst;
Foo!(x)();
return 1;
}
May 02 2004
In this code:
<CODE>
import std.stream;
import std.c.stdio;
alias std.stream.stdout stdout;
template Foo(alias T)
{
void Foo()
{
stdout.writeLine(toString(T));
}
}
int main ( char [] [] args )
{
static char[] x = "hello";
static char[] z = "world";
static int y=100;
alias Foo!(x) foox;
alias Foo!(y) fooy;
Foo!(x)();
Foo!(y)();
Foo!(z)();
foox();
fooy();
return 1;
}
</CODE>
I get "Internal error: ..\ztc\out.c 1127"
if instead of "static int y=100;" i write "int y=100;"
But i don't understand the behaviour of the above code!
Why does this code print "hello" five times?
I expected it to print:
hello
100
world
hello
100
What am i missing?
"Ivan Senji" <ivan.senji public.srce.hr> wrote in message
news:c73l45$2df6$1 digitaldaemon.com...
I was trying to figure out how to use templates with alias parameters
and i wasn't able to figure it out, but i got this internal error
Internal error: ..\ztc\out.c 1127
with this code:
import std.stream;
import std.c.stdio;
alias std.stream.stdout stdout;
template Foo(alias T)
{
void Foo()
{
stdout.writeLine(T);
}
}
int main ( char [] [] args )
{
char[] x = "hello";
alias Foo!(x) fooinst;
Foo!(x)();
return 1;
}
May 03 2004
Ivan Senji wrote: [snip code]I get "Internal error: ..\ztc\out.c 1127" if instead of "static int y=100;" i write "int y=100;"I don't get an error, but the assignment doesn't happen without the static keyword. I am one version behind on dmd and I think I am up to date with dgc, both running on linux.But i don't understand the behaviour of the above code! Why does this code print "hello" five times?I expected it to print: hello 100 world hello 100This is what I get with both dmd and dgc using your code. When I drop the 'static' keyword from the int declaration, '100' is replaced by '0'. Then if I do a seperate assignment, that works either way. i.e. <CODE> ... int y; y=100; ... </CODE> works as expected.What am i missing?I am not sure. [remainder snipped] Cheers, Craig
May 05 2004
"Craig Pennington" <cpenning milo.org> wrote in message news:c7ak76$pst$1 digitaldaemon.com...Ivan Senji wrote: [snip code]Then it is probbably a 0.86 bug, Walter fixed it!I get "Internal error: ..\ztc\out.c 1127" if instead of "static int y=100;" i write "int y=100;"I don't get an error, but the assignment doesn't happen without the static keyword. I am one version behind on dmd and I think I am up to date with dgc, both running on linux.What does it print when you run it? All i get is: hello hello hello hello helloBut i don't understand the behaviour of the above code! Why does this code print "hello" five times?I expected it to print: hello 100 world hello 100This is what I get with both dmd and dgc using your code. When I drop the 'static' keyword from the int declaration, '100' is replaced by '0'. Then if I do a seperate assignment, that works either way. i.e. <CODE> ... int y; y=100; ... </CODE> works as expected.What am i missing?I am not sure. [remainder snipped] Cheers, Craig
May 05 2004








"Ivan Senji" <ivan.senji public.srce.hr>