On 7/1/15 6:25 PM, Jonathan M Davis via Digitalmars-d-learn wrote:
On Wednesday, July 01, 2015 08:52:38 Steven Schveighoffer via
Digitalmars-d-learn wrote:
The runtime cannot introspect the code to detect the circular
dependency, so it makes a conservative decision. I'm waiting on an
introduction of RTInfo for modules [1] to allow us to mark static ctors
as standalone, then we can probably fix this problem through a sort of
"trust the programmer" mechanism.
I wouldn't mind that, but Walter shot that idea down previously when I was
arguing for adding a way to the language to tell the compiler that a static
constructor didn't depend on anything else. He didn't want a "trust the
programmer" mechanism in this case. I don't remember what his arguments were
though.
With RTInfo for modules, we don't need any additional language support.
In Dconf '14, Walter said it was a good idea to add the RTInfo support
for modules. I don't know if he voiced an opinion on the usage of it for
flagging whether the static ctors are all standalone.
But with support for modifying the runtime to reflect compile-time
traits, we can at least play around with it.
There are some things that are so obviously not dependent on anything
(like initializing an AA), it's really quite annoying to have the
runtime conservatively flag those as error.
-Steve