Re: Tuple to tuple conversion
Simen kjaeraas wrote: > "dmd a b -unittest" works. "dmd b a -unittest" does not. This may explain a problem that I hit recently. I had had all of a program's code in a single file. Then I started pulling classes to their respective source files one by one. As I did that, of course I compiled and run the application to see that everything still worked. At some point, even though all the unittest blocks were commented out, compiling with -unittest would cause a segmentation fault in the built application. The problem went away as I pulled more classes out of the main source file. Ali
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 21:10:54 +0900, Masahiro Nakagawa wrote: > On Tue, 08 Jun 2010 19:39:43 +0900, Simen kjaeraas > wrote: > >> Simen kjaeraas wrote: >> >>> Lars T. Kyllingstad wrote: >>> FWIW, I've run across the same error, while writing code that had nothing to do with tuples. And I've seen others complaining about it too. It seems to be a rather elusive bug in Phobos. >>> >>> This has now been tracked down to the importing of std.typecons in two >>> included files. >>> >>> Test case: >>> >>> // >>> module a; >>> import std.typecons; >>> alias Tuple!( float ) foo; >>> >>> // >>> module b; >>> import std.typecons; >> >> Forgot to mention, this only happens with -unittest. >> http://d.puremagic.com/issues/show_bug.cgi?id=4294 >> >> > Same issue? > http://d.puremagic.com/issues/show_bug.cgi?id=4003 Definitely. Simen's test case is slightly better, though, since it doesn't bring std.stdio into the mix. -Lars
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 19:39:43 +0900, Simen kjaeraas wrote: Simen kjaeraas wrote: Lars T. Kyllingstad wrote: FWIW, I've run across the same error, while writing code that had nothing to do with tuples. And I've seen others complaining about it too. It seems to be a rather elusive bug in Phobos. This has now been tracked down to the importing of std.typecons in two included files. Test case: // module a; import std.typecons; alias Tuple!( float ) foo; // module b; import std.typecons; Forgot to mention, this only happens with -unittest. http://d.puremagic.com/issues/show_bug.cgi?id=4294 Same issue? http://d.puremagic.com/issues/show_bug.cgi?id=4003
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 12:56:04 +0200, Simen kjaeraas wrote: > Lars T. Kyllingstad wrote: >> That's consistent with my experiences too. It seems to be triggered by >> a Phobos unittest. >> >> Still, I can't reproduce it with your test case. Which DMD version are >> you using? > > 2.045. Actually, I can't reproduce it now either. Ah, found the problem. > "dmd a b -unittest" works. "dmd b a -unittest" does not. Ok, now I can reproduce it too, with 2.046. This just makes it even more clear that it is a DMD bug, not a Phobos one. I've been running into a lot of these order-of-compilation bugs lately. :( -Lars
Re: Tuple to tuple conversion
Lars T. Kyllingstad wrote: That's consistent with my experiences too. It seems to be triggered by a Phobos unittest. Still, I can't reproduce it with your test case. Which DMD version are you using? 2.045. Actually, I can't reproduce it now either. Ah, found the problem. "dmd a b -unittest" works. "dmd b a -unittest" does not. -- Simen
Re: Tuple to tuple conversion
Lars T. Kyllingstad wrote: I'm not sure I understand this. Do you then import a and b into another module to reproduce the error? This doesn't do it for me... As the bug report says: "dmd -unittest a b" -- Simen
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 12:39:43 +0200, Simen kjaeraas wrote: > Simen kjaeraas wrote: > >> Lars T. Kyllingstad wrote: >> >>> FWIW, I've run across the same error, while writing code that had >>> nothing >>> to do with tuples. And I've seen others complaining about it too. It >>> seems to be a rather elusive bug in Phobos. >> >> This has now been tracked down to the importing of std.typecons in two >> included files. >> >> Test case: >> >> // >> module a; >> import std.typecons; >> alias Tuple!( float ) foo; >> >> // >> module b; >> import std.typecons; > > Forgot to mention, this only happens with -unittest. > http://d.puremagic.com/issues/show_bug.cgi?id=4294 That's consistent with my experiences too. It seems to be triggered by a Phobos unittest. Still, I can't reproduce it with your test case. Which DMD version are you using? -Lars
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 12:31:50 +0200, Simen kjaeraas wrote: > Lars T. Kyllingstad wrote: > >> FWIW, I've run across the same error, while writing code that had >> nothing to do with tuples. And I've seen others complaining about it >> too. It seems to be a rather elusive bug in Phobos. > > This has now been tracked down to the importing of std.typecons in two > included files. > > Test case: > > // > module a; > import std.typecons; > alias Tuple!( float ) foo; > > // > module b; > import std.typecons; I'm not sure I understand this. Do you then import a and b into another module to reproduce the error? This doesn't do it for me... Anyway, I was wrong calling this a Phobos bug. It's clearly a DMD bug, since the error message static assert (is(Tuple!(string,float) == Tuple!(string,float))) is false is completely meaningless.
Re: Tuple to tuple conversion
Simen kjaeraas wrote: Lars T. Kyllingstad wrote: FWIW, I've run across the same error, while writing code that had nothing to do with tuples. And I've seen others complaining about it too. It seems to be a rather elusive bug in Phobos. This has now been tracked down to the importing of std.typecons in two included files. Test case: // module a; import std.typecons; alias Tuple!( float ) foo; // module b; import std.typecons; Forgot to mention, this only happens with -unittest. http://d.puremagic.com/issues/show_bug.cgi?id=4294 -- Simen
Re: Tuple to tuple conversion
Lars T. Kyllingstad wrote: FWIW, I've run across the same error, while writing code that had nothing to do with tuples. And I've seen others complaining about it too. It seems to be a rather elusive bug in Phobos. This has now been tracked down to the importing of std.typecons in two included files. Test case: // module a; import std.typecons; alias Tuple!( float ) foo; // module b; import std.typecons; -- Simen
Re: Tuple to tuple conversion
On Tue, 08 Jun 2010 03:29:05 +0200, Simen kjaeraas wrote: > Sounds stupid, don't it? > 123456789012345678901234567890123456789012345678901234567890123456789012 > Carrying in my hat my trusty foo, a std.typecons.Tuple!(float), I want > to use it as a parameter to a function taking non-tuple parameters, i.e. > a single float. foo.tupleof gives me an unwieldy conglomerate of > tuple((Tuple!(float))._field_field_0,(Tuple!(float))._0). First, I'm not > sure what all of this means, second I'm completely sure it does not mean > what I want. > > foo.field seems much more close to what I want, returning a nice and > clean (float) when I ask for it. However, doing so in the context of > being a function parameter yields other problems, in the form of: > > src\phobos\std\typecons.d(424): Error: static assert > (is(Tuple!(string,float) == Tuple!(string,float))) is false > src\phobos\std\typecons.d(413):instantiated from here: > Tuple!(string,float) > src\phobos\std\typecons.d(423):instantiated from here: > slice!(1,3) problem.d(15):3 recursive instantiations from here: > Tuple!(float) FWIW, I've run across the same error, while writing code that had nothing to do with tuples. And I've seen others complaining about it too. It seems to be a rather elusive bug in Phobos. -Lars
Re: Tuple to tuple conversion
Simen kjaeraas wrote: I guess what I'm asking for here is, is there a way to do what I want? Hm, it seems the problem was not where I thought it was. However, this is getting curiouser and curiouser. -- Simen