[Issue 11107] New: variable initialized to mutable non-TLS global.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Sep 22 23:57:32 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11107
Summary: variable initialized to mutable non-TLS global.
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: monarchdodra at gmail.com
--- Comment #0 from monarchdodra at gmail.com 2013-09-22 23:57:30 PDT ---
//----
class A{}
auto a = new A; //(3)
immutable ia = new immutable(A); //(4)
auto i = new int; //(5)
immutable ii = new immutable(int); //(6)
struct S
{
auto a = new A; //(10) HERE!!!
auto i = new int; //(11)
}
//----
I'm not sure if this is a reg, but:
2.062:
main.d(3): Error: cannot evaluate new A at compile time
main.d(4): Error: cannot evaluate new immutable(A) at compile time
main.d(5): Error: cannot evaluate new int at compile time
main.d(6): Error: cannot evaluate new immutable(int) at compile time
main.d(10): Error: cannot evaluate new A at compile time
main.d(11): Error: cannot evaluate new int at compile time
2.063 has allowed evaluating classes at compile time (but not ints,
apparently):
main.d(3): Error: variable main.a is mutable. Only const or immutable class
thread local variable are allowed, not main.A
main.d(5): Error: Cannot interpret new int at compile time
main.d(6): Error: Cannot interpret new immutable(int) at compile time
main.d(11): Error: Cannot interpret new int at compile time
I believe that this code is wrong:
- first, because it is surprising that 'a' reference a global class instance,
as opposed to a new A for each new S (even if it's the correct behavior).
- second, because the new global instance is not TLS (referenced by T.init),
yet is placed in a non-shared.
Line 10 should be illegal. It should be either of:
immutable ai = new immutable(A);
shared as = new shared(A);
--
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