[Issue 1654] Array concatenation should result in mutable or invariant depending on usage
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Apr 27 22:50:41 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=1654
--- Comment #27 from Kenji Hara <k.hara.pg at gmail.com> 2013-04-27 22:50:37 PDT ---
I think this is doable enhancement with sane rule.
>From 2.061, we have a 'unique expression' in certain cases.
pure int[] newArr(int n) { return new int[](n); }
immutable int[] arr = newArr(3);
// newArr(3) creates an unique array, so it is implicitly convertible to
// immutable
class MyClass {}
immutable MyClass c = new MyClass();
// Raw NewExpression creates an unique object, so it is implicitly
convertible
// to immutable.
>From 2.063, qualified constructor supports creating 'unique object'.
struct MyObj { this(int) pure {} }
immutable MyObj *p = new MyObj(1);
// this(int) pure makes 'unique object', so the created object is implicitly
// convertible to immutable.
Based on the 'unique expression' concept, we can consider that an array
concatenation creates 'unique expression' when some conditions are satisfied.
--
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