digitalmars.D.learn - BUG? lazy argument + variadic arguments
- Ville Mattila (38/38) Jan 07 2007 Hello,
- Thomas Kuehne (14/51) Jan 07 2007 -----BEGIN PGP SIGNED MESSAGE-----
- Ville Mattila (2/10) Jan 07 2007 The bug 814 has been filled.
Hello, I'm very new to d. I'm testing lazy evaluation and it seems like I've found bug w/ dmd compiler on linux. Here are the details. -- foo.d --- import std.stdio; import std.stdarg; import std.string, std.conv, std.stream; void foo(lazy void expression, ...) { //expression(); if (_arguments.length > 0) { _arguments[0].print(); //writefln("got vararg:" ~ _arguments[0].name); if ((_arguments[0]) == typeid(char[])) { writefln("got vararg:" ~ std.conv.toString(_arguments.length)); char[] tmp_msg = va_arg!(char[])(_argptr); writefln("GOOTT vararg: " ~ tmp_msg); } } } int main(char[][] args) { foo(writefln("barz"),"foo"); return(0); } --- foo.d ---- ./foo char[] got vararg:1 Segmentation fault (core dumped) mulperi mulperi-desktop:/usr/local/src/apps/d/dmd/samples/d$ dmd --help Digital Mars D Compiler v1.0 Copyright (c) 1999-2007 by Digital Mars written by Walter Bright Documentation: www.digitalmars.com/d/index.html Usage: dmd files.d ... { -switch } I'm usring xubuntu 6.10 w/ latest patches. - Ville
Jan 07 2007
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ville Mattila schrieb am 2007-01-07:Hello, I'm very new to d. I'm testing lazy evaluation and it seems like I've found bug w/ dmd compiler on linux. Here are the details. -- foo.d --- import std.stdio; import std.stdarg; import std.string, std.conv, std.stream; void foo(lazy void expression, ...) { //expression(); if (_arguments.length > 0) { _arguments[0].print(); //writefln("got vararg:" ~ _arguments[0].name); if ((_arguments[0]) == typeid(char[])) { writefln("got vararg:" ~ std.conv.toString(_arguments.length)); char[] tmp_msg = va_arg!(char[])(_argptr); writefln("GOOTT vararg: " ~ tmp_msg); } } } int main(char[][] args) { foo(writefln("barz"),"foo"); return(0); } --- foo.d ---- ./foo char[] got vararg:1 Segmentation fault (core dumped) mulperi mulperi-desktop:/usr/local/src/apps/d/dmd/samples/d$ dmd --help Digital Mars D Compiler v1.0 Copyright (c) 1999-2007 by Digital Mars written by Walter Bright Documentation: www.digitalmars.com/d/index.html Usage: dmd files.d ... { -switch } I'm usring xubuntu 6.10 w/ latest patches.The "lazy void expression" causes the problem. I'm unsure if "lazy void" is legal, but it certanly causes an incorrect code generation. Please file this bug at: http://d.puremagic.com/issues/ Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFFoUyoLK5blCcjpWoRAjCHAKCHEQ/DlwwGGTC5VvToJWcRHA63NwCfb83c HZRgyGkWxkZNxs2R6d/YbTA= =miy4 -----END PGP SIGNATURE-----
Jan 07 2007
The "lazy void expression" causes the problem. I'm unsure if "lazy void" is legal, but it certanly causes an incorrect code generation. Please file this bug at: http://d.puremagic.com/issues/The bug 814 has been filled. - Ville
Jan 07 2007