[Issue 15083] declaring a variable, cannot access frame pointer

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Fri Sep 18 08:53:46 PDT 2015


https://issues.dlang.org/show_bug.cgi?id=15083

--- Comment #4 from John Colvin <john.loughran.colvin at gmail.com> ---
(In reply to Marc Schütz from comment #3)
> (In reply to John Colvin from comment #2)
> > You can definitely declare variables with Voldemort types.
> > 
> > e.g.
> > auto foo(){ struct S{} return S(); }
> > void bar(){ typeof(foo()) a; }
> > 
> > is fine.
> > 
> 
> That's not a "real" Voldemort type with a closure; try this instead:
> 
> auto foo(){
>     int x;
>     struct S {
>         int baz() { return x; }
>     }
>     return S();
> }
> void bar(){ typeof(foo()) a; } // Error: cannot access frame pointer of
> xx.foo.S

OK, I see what you mean.

> > 
> > The problem here is to do with the initialiser.
> > 
> > 	typeof(dirEntries(path, filetype, SpanMode.depth)) files = void;
> > 
> > doesn't cause any problems.
> 
> This could either be an oversight (= bug), or it could be intentional. I
> suspect the latter, because it allows to actually declare a Voldemort
> variable that is only initialized later.

Yes, I think it probably is intentional, or at least not a problem that it's
allowed.

--


More information about the Digitalmars-d-bugs mailing list