October 21, 2016 Is this a bug ? | ||||
|---|---|---|---|---|
| ||||
This very simple stuff:
class Item
{
alias children this;
Item[] children;
void populate()
{
children ~= new Item;
assert(children.length == 1);
}
}
void main()
{
Item root = new Item;
root.populate;
}
leads to an assertion failure. Am I too tired to see the error or do you think it's a bug ?
| ||||
October 21, 2016 Re: Is this a bug ? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On 10/21/2016 06:55 PM, Basile B. wrote:
> This very simple stuff:
>
> class Item
> {
> alias children this;
> Item[] children;
> void populate()
> {
> children ~= new Item;
> assert(children.length == 1);
> }
> }
>
> void main()
> {
> Item root = new Item;
> root.populate;
> }
>
> leads to an assertion failure. Am I too tired to see the error or do you
> think it's a bug ?
Bug. `alias this` is tried too eagerly.
What happens: The alias this of `new Item` is evaluated, leading to `children ~= [];`.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply