| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
July 19, 2017 Base class' constructor is not implicitly inherited for immutable classes. A bug or a feature? | ||||
|---|---|---|---|---|
| ||||
Hello, I have this code:
immutable class Base
{
this() {}
}
immutable class Derived : Base {}
void main()
{
new immutable Derived();
}
I'd like class Derived to automatically inherit the default constructor from Base. However, this is not the case:
main.d(6): Error: class main.Derived cannot implicitly generate a default ctor when base class main.Base is missing a default ctor
Is it a bug or it should be like this?
| ||||
July 20, 2017 Re: Base class' constructor is not implicitly inherited for immutable classes. A bug or a feature? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Piotr Mitana | On Wednesday, 19 July 2017 at 16:00:56 UTC, Piotr Mitana wrote:
> Hello, I have this code:
>
> immutable class Base
> {
> this() {}
> }
>
> immutable class Derived : Base {}
>
> void main()
> {
> new immutable Derived();
> }
>
> I'd like class Derived to automatically inherit the default constructor from Base. However, this is not the case:
>
> main.d(6): Error: class main.Derived cannot implicitly generate a default ctor when base class main.Base is missing a default ctor
>
> Is it a bug or it should be like this?
I'd say it's a bug. There was a similar issue at one point where it wouldn't consider default constructor with default args.
| |||
July 20, 2017 Re: Base class' constructor is not implicitly inherited for immutable classes. A bug or a feature? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Piotr Mitana | On Wednesday, 19 July 2017 at 16:00:56 UTC, Piotr Mitana wrote:
> Hello, I have this code:
>
> immutable class Base
> {
> this() {}
> }
>
> immutable class Derived : Base {}
>
> void main()
> {
> new immutable Derived();
> }
>
> I'd like class Derived to automatically inherit the default constructor from Base. However, this is not the case:
>
> main.d(6): Error: class main.Derived cannot implicitly generate a default ctor when base class main.Base is missing a default ctor
>
> Is it a bug or it should be like this?
Interesting that the same code without immutable works.
| |||
July 20, 2017 Re: Base class' constructor is not implicitly inherited for immutable classes. A bug or a feature? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Piotr Mitana | On Wednesday, 19 July 2017 at 16:00:56 UTC, Piotr Mitana wrote:
> Hello, I have this code:
>
> immutable class Base
> {
> this() {}
> }
>
> immutable class Derived : Base {}
>
> void main()
> {
> new immutable Derived();
> }
>
> I'd like class Derived to automatically inherit the default constructor from Base. However, this is not the case:
>
> main.d(6): Error: class main.Derived cannot implicitly generate a default ctor when base class main.Base is missing a default ctor
>
> Is it a bug or it should be like this?
compiles with:
dmd 2.073
fails with:
dmd 2.074
dmd 2.075
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply