www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - __gshared immutable array of immutable elements

reply "Nicolas Sicard" <dransic gmail.com> writes:
In this declaration (tango.io.Console.d from Tango2):

__gshared immutable immutable(char)[] Eol = "\r\n";

Aren't the two `immutable` keywords redundant? Why would 
`__gshared` be necessary for such an immutable type?

Thanks
Nov 12 2013
parent reply =?UTF-8?B?TWFydGluIERyYcWhYXI=?= <drasar ics.muni.cz> writes:
Dne 12.11.2013 19:49, Nicolas Sicard napsal(a):
 In this declaration (tango.io.Console.d from Tango2):

 __gshared immutable immutable(char)[] Eol = "\r\n";

 Aren't the two `immutable` keywords redundant? Why would `__gshared` be
 necessary for such an immutable type?

 Thanks
Hi, this declaration is equal to __gshared immutable string Eol = "\r\n"; Those two immutables are not redundant, because it is an array of immutable chars (string), that is itself immutable. The __gshared should not be necessary, but given some quirks with type system and concurrency, it may be necessary to have it. But this is just a guess from me. Drasha
Nov 12 2013
parent reply "Dicebot" <public dicebot.lv> writes:
On Tuesday, 12 November 2013 at 20:09:57 UTC, Martin Drašar wrote:
 Those two immutables are not redundant, because it is an array 
 of immutable chars (string), that is itself immutable.
It is redundant because "immutable" is transitive. "immutable char[]" is equivalent. But Tango has lot of meaningless and redundant attributes ( "final private" ;) )
Nov 12 2013
parent "Nicolas Sicard" <dransic gmail.com> writes:
On Tuesday, 12 November 2013 at 20:16:31 UTC, Dicebot wrote:
 On Tuesday, 12 November 2013 at 20:09:57 UTC, Martin Drašar 
 wrote:
 Those two immutables are not redundant, because it is an array 
 of immutable chars (string), that is itself immutable.
It is redundant because "immutable" is transitive. "immutable char[]" is equivalent. But Tango has lot of meaningless and redundant attributes ( "final private" ;) )
That´s what I thought. So no hidden subtlety here, just hyperprotection :) Thanks
Nov 12 2013