On Tuesday, 27 June 2023 at 22:34:17 UTC, Adam D Ruppe wrote:
On Tuesday, 27 June 2023 at 22:20:22 UTC, Chris Katko wrote:
                pragma(msg, t.stringof); // does not see any new fields!

D's declarations are all order-independent, in theory those foreaches are done simultaneously, so it is kinda a race condition.

Thank you, that's what I thought, but then I started adding them and there was no warning and I was like "wait... is this top-down???"


In practice, the compiler does them in two passes but both based on the same initial state.

Adding stuff and then reflecting over the stuff you add must be done as explicit steps on the outside, like you can make a `struct step1 {}` then `alias step2 = transform!step1;` then `alias step3 = transform_again!step2;` or something.

Okay again makes more sense. The amount of stuff that was "kinda" working, plus learning through tiny 3 liner code snippets in docs, was making my brain explode a bit.

A constructor/factory pattern for this makes way more sense.

Sometimes it's hard to tell where things are symbolic / functional, verses procedural/linear.


Reply via email to