Thread overview | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
June 08, 2010 Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
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) Especially interesting might be line 424, as that assert ought to be true in most cases. I guess what I'm asking for here is, is there a way to do what I want? -- Simen |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | Simen kjaeraas <simen.kjaras@gmail.com> 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 |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | 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
|
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lars T. Kyllingstad | Lars T. Kyllingstad <public@kyllingen.nospamnet> 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 |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | Simen kjaeraas <simen.kjaras@gmail.com> wrote: > Lars T. Kyllingstad <public@kyllingen.nospamnet> 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 |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | On Tue, 08 Jun 2010 12:31:50 +0200, Simen kjaeraas wrote:
> Lars T. Kyllingstad <public@kyllingen.nospamnet> 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.
|
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | On Tue, 08 Jun 2010 12:39:43 +0200, Simen kjaeraas wrote:
> Simen kjaeraas <simen.kjaras@gmail.com> wrote:
>
>> Lars T. Kyllingstad <public@kyllingen.nospamnet> 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
|
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lars T. Kyllingstad | Lars T. Kyllingstad <public@kyllingen.nospamnet> 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 |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lars T. Kyllingstad | Lars T. Kyllingstad <public@kyllingen.nospamnet> 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 |
June 08, 2010 Re: Tuple to tuple conversion | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen kjaeraas | On Tue, 08 Jun 2010 12:56:04 +0200, Simen kjaeraas wrote:
> Lars T. Kyllingstad <public@kyllingen.nospamnet> 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
|
Copyright © 1999-2021 by the D Language Foundation