No one? Is this a bug, or am I overlooking something? (entirely possible since I didn't use D since trying it once in D1 times)

On Monday, 12 November 2012 at 11:59:50 UTC, Joe wrote:
Ok, i was trying out D and wanted to see if i could create something that behaves like a property but adds a change notification signal. Doing this, I encountered a hangup which might be a bug. So far I have the following:

-----------------------------------------------------------

import std.signals;
import std.stdio;

struct Property
{
        alias get this;
        
        int set(int v) { emit(); return data_ = v; }
        int get() { return data_; }
        
        int opAssign(int v) { return set(v); }
        
        mixin Signal!();

private:
        int data_ = 0;
}

struct Foo
{
        Property prop;
}

class Observer
{
        void watch()
        {
                writeln("Value change observed!");
        }
}

-----------------------------------------------------------

This works:
void main()
{
        Foo f;
        Observer o = new Observer;
        f.prop.connect(&o.watch);
        f.prop = 7;
}

This also works:
void main()
{
        Foo f;
        Observer o = new Observer;
        f.prop = 7;
        writeln(f.prop);
}

This never terminates:
void main()
{
        Foo f;
        Observer o = new Observer;
        f.prop.connect(&o.watch);
        f.prop = 7;
        writeln(f.prop);
}


Reply via email to