[Issue 6114] New: immutable class variable not properly initialized when the constructor initializing it is non-shared
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Jun 5 23:36:22 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=6114
Summary: immutable class variable not properly initialized when
the constructor initializing it is non-shared
Product: D
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: jmdavisProg at gmx.com
--- Comment #0 from Jonathan M Davis <jmdavisProg at gmx.com> 2011-06-05 23:31:52 PDT ---
This is related to bug# 6113. If you go into std.datetime and change the static
constructors which initialize UTC._utc or LocalTime._localTime (search for
"_utc =" or "_localTime =" - minus the quotes - to find them quickly), then
this code will fail:
import std.datetime;
shared static this()
{
assert(UTC() !is null);
assert(LocalTime() !is null);
}
void main()
{}
As long as those static constructors are shared, then this code is fine. But if
they're not shared, then the assertions fail. I believe that this is related to
bug# 4923 and the fact that immutable global variables and immutable static
variables are implicitly shared. I really think that the language should be
altered such that it be an error to attempt to initialize an immutable global
variable or immutable static variable in a non-shared constructor. Since,
they're implicitly shared, it doesn't make sense to initialize them in a
thread-local manner anyway. And it's obviously causing problems as-is.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list