Re: Tuple to tuple conversion

2010-06-23 Thread Ali Çehreli

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

2010-06-08 Thread Lars T. Kyllingstad
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

2010-06-08 Thread Masahiro Nakagawa
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

2010-06-08 Thread Lars T. Kyllingstad
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

2010-06-08 Thread Simen kjaeraas

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

2010-06-08 Thread Simen kjaeraas

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

2010-06-08 Thread Lars T. Kyllingstad
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

2010-06-08 Thread Lars T. Kyllingstad
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

2010-06-08 Thread Simen kjaeraas

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

2010-06-08 Thread Simen kjaeraas

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

2010-06-07 Thread Lars T. Kyllingstad
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

2010-06-07 Thread Simen kjaeraas

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