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