On Sunday, 27 January 2019 at 09:31:46 UTC, bauss wrote:
On Sunday, 27 January 2019 at 05:37:57 UTC, Jonathan Levi wrote:
This works in LDC but not DMD?

```
class A : B, I {
    alias i = typeof(super).i;
}
class B {
    void i() {
        writeln("i");
    }
}
interface I {
    void i();
}
```

Is this a bug in DMD or in LDC? How can I get this effect correctly?

There is no bug here.

A does not implement i as a function which it should.

What you want to do is to override i within A and then call super.i() in the function.

An alias does not substitute an implementation and I think that's good because it could really cause some nasty hijacking bugs.
Should probably have posted solution:

```
class A : B, I {
    override void i() {
        super.i();
    }
}
class B {
    void i() {
        writeln("i");
    }
}
interface I {
    void i();
}
```

Reply via email to