DMD 0.164 release
kris
foo at bar.com
Thu Aug 17 16:27:17 PDT 2006
Refer to "The future of lambda delegates" on ng.D ?
Apparently some changes here are scheduled for a post 1.0 release
Søren J. Løvborg wrote:
> Walter Bright wrote:
>
>>Bug fixes.
>
>
> Excellent. I'm particularly glad to see bug 279 fixed so soon. Thanks!
>
> I do note, however, that in the fix, you've created a distinction between
> two different kinds of inner classes, those that refer to local variables
> and those who don't.
>
> Those who don't access local variables work as they always have (and thus,
> no old code is broken).
>
> Those who do access local variables can only access them until the
> containing method returns, just as with inner functions, but (not too
> surprising when you know the internals) can _also_ only access members of
> the containing class until the containing method returns, because (I
> suppose) access to the containing class now goes through the "this" local
> variable of the method, instead of directly through the context pointer as
> usual.
>
> ===
> abstract class Inner { abstract void print(); }
>
> class Outer
> {
> int memberVar = 123;
>
> Inner inner;
>
> this()
> {
> int localVar = 42;
>
> inner = new class Inner
> {
> void print() { printf("%d %d\n", memberVar, localVar); }
> };
> inner.print();
> }
>
> void print() { inner.print(); }
> }
>
> void main()
> {
> Outer o = new Outer(); // prints 42 123
> o.print(); // prints two garbage numbers
> }
> ===
>
> If the test-case above is modified to only access memberVar, everything
> works as expected.
>
> Depending on how deliberate this is, this will need to be either documented
> or fixed (by having not one, but two content pointers in the inner classes
> that require it, perhaps).
>
> In either case, I'm very happy with this release, so thanks again!
>
> Søren J. Løvborg
> web at kwi.dk
>
>
More information about the Digitalmars-d-announce
mailing list