DMD 1.036 and 2.020 releases

Bill Baxter wbaxter at gmail.com
Mon Oct 20 22:32:03 PDT 2008


On Tue, Oct 21, 2008 at 8:29 AM, Walter Bright
<newshound1 at digitalmars.com> wrote:
>
> http://www.digitalmars.com/d/1.0/changelog.html
> http://ftp.digitalmars.com/dmd.1.036.zip
>
> The 2.0 version splits phobos into druntime and phobos libraries (thanks to
> Sean Kelly). This will enable both Tango and Phobos to share a common core
> library.
>
> http://www.digitalmars.com/d/2.0/changelog.html
> http://ftp.digitalmars.com/dmd.2.020.zip
>
> There are a lot of structural changes that go along with this, so expect
> some rough patches with this release. It may take a followup release to file
> them down. There's also some renaming of imports and function names, as a
> compromise with Tango names.

Wao!  Missed this at first:

class Foo
{
    ref int getref() {
        return m_int;
    }
private:
    int m_int = 23;
}

void main() {
    auto foo = new Foo;

    writefln(foo.getref);
    foo.getref() = 7;
    writefln(foo.getref);
}
//Outputs:
//23
//7

It works!  This is maybe even bigger news than cure for TangoPhobia!

But I think maybe more documentation is needed in the Ref returns
section regarding how this affects opIndex.

class Foo
{
    this() {
        m_arr.length = 10;
        foreach(i, ref a; m_arr) { a=i;}
    }
    int[] array() {
        return m_arr;
    }
    ref int opIndex(size_t idx) {
        return m_arr[idx];
    }

private:
    int[] m_arr;
}

void main() {
    auto foo = new Foo;
    foo[3] = -99;
//hello.d(44): Error: operator [] assignment overload with opIndex(i,
value) illegal, use opIndexAssign(value, i)
//hello.d(44): function hello.Foo.opIndex (uint idx) does not match
parameter types (int,int)
//hello.d(44): Error: expected 1 arguments, not 2
}

Apparently using opIndex with ref return is not allowed as a way to
set an index.
This works though:

    *(&foo[3]) = -99;

Is there a good reason why it shouldn't be possible to use opAssign as
a replacement for opIndexAssign?

--bb


More information about the Digitalmars-d-announce mailing list