Jump to page: 1 2
Thread overview
Tuple to tuple conversion
Jun 08, 2010
Simen kjaeraas
Jun 08, 2010
Simen kjaeraas
Jun 08, 2010
Simen kjaeraas
Jun 08, 2010
Simen kjaeraas
Jun 08, 2010
Simen kjaeraas
Jun 23, 2010
Ali Çehreli
Jun 08, 2010
Masahiro Nakagawa
Jun 08, 2010
Simen kjaeraas
June 08, 2010
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
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
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
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
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
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
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
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
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
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
« First   ‹ Prev
1 2