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