Re: Scoped in a foreach loop.

2015-06-05 Thread via Digitalmars-d

On Friday, 5 June 2015 at 09:06:56 UTC, Marc Schütz wrote:

On Friday, 5 June 2015 at 03:07:53 UTC, Yuxuan Shui wrote:

I tried something like this:

foreach(e; scoped!SomeRangeType(args)) {
}

And my program segment faults. But this works:

{
   auto x = scoped!SomeRangeType(args);
   foreach(e; x) {
   }
}

Shouldn't the range be alive until the end of the loop?


It should. Which compiler version are you using? I remember 
there recently was a bugfix for a very similar bug, it might 
not have been released yet. Can you please either test with DMD 
from Git (you'd need to build it yourself), or provide a 
minimal testcase so I can test it for you?


I see Lionello already provided one. The bug is still there in 
DMD master.


Re: Scoped in a foreach loop.

2015-06-05 Thread Lionello Lunesu via Digitalmars-d

On 05/06/15 05:07, Yuxuan Shui wrote:

I tried something like this:

foreach(e; scoped!SomeRangeType(args)) {
}

And my program segment faults. But this works:

{
 auto x = scoped!SomeRangeType(args);
 foreach(e; x) {
 }
}

Shouldn't the range be alive until the end of the loop?



Looks like a bug. I can repro it as well.

Filed as https://issues.dlang.org/show_bug.cgi?id=14653

L.


Re: Scoped in a foreach loop.

2015-06-05 Thread via Digitalmars-d

On Friday, 5 June 2015 at 03:07:53 UTC, Yuxuan Shui wrote:

I tried something like this:

foreach(e; scoped!SomeRangeType(args)) {
}

And my program segment faults. But this works:

{
auto x = scoped!SomeRangeType(args);
foreach(e; x) {
}
}

Shouldn't the range be alive until the end of the loop?


It should. Which compiler version are you using? I remember there 
recently was a bugfix for a very similar bug, it might not have 
been released yet. Can you please either test with DMD from Git 
(you'd need to build it yourself), or provide a minimal testcase 
so I can test it for you?