D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 6146 - A way to mark a static construct as having no dependencies
Summary: A way to mark a static construct as having no dependencies
Status: RESOLVED WONTFIX
Alias: None
Product: D
Classification: Unclassified
Component: dmd (show other issues)
Version: D2
Hardware: All All
: P2 enhancement
Assignee: No Owner
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-06-11 00:19 UTC by Jonathan M Davis
Modified: 2015-06-09 05:14 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Jonathan M Davis 2011-06-11 00:19:12 UTC
It would really help in dealing with circular dependencies between modules if it were possible to mark a static constructor as not having any dependencies. It's often the case, and it's a royal pain to get rid of a circular dependency once the compiler (or is it druntime?) decides that you have one. If you have a true circular dependency, then you need to redesign things, but if you don't, then the current status of things is _very_ annoying.

It seems to me that it could be as simple as adding a new attribute (e.g. @nodeps) which only applied to static constructors and then that static constructor is then ignored in the tests for circular dependencies. I don't know how much work it would be to effect such a change, but it at least seems like it would be a fairly small change, and it would have major benefits. It's incredibly easy to get a circular dependency once you start using many static constructors, and the vast majority of the time there isn't really a dependency. So, having a means to indicate that a static constructor has no external dependencies would help a lot.
Comment 1 Jonathan M Davis 2012-01-20 23:17:21 UTC
I'd love to have something like this, but Walter is completely against it, so it's never going to happen.