On Tuesday, 13 November 2012 at 10:09:27 UTC, luka8088 wrote:
Can you point out any existing public code that would be broken?

Off hand, no.. I'm not that familiar with a lot of the code or the in depth details of phoboes; However suddenly reversing what is mutable and what is const is bound to break a lot of things even unintentionally.

Hmmm.. Does remind me of a bit of my code sometimes... Something went like...

 class S {
   void func(S s) {
     if (!s)
       s = new S(); //create one if not passed in.

     //process using S and s (be it new or passed in)
   }
 }

That would certainly cause a problem.. In my own code example it may empty the pointer/reference if certain requirements were met, and then use if the class reference was set or null for later logic (even if the object referenced to wasn't changed...). Course being passed something like a string... (seems the most likely place you'd find it), in which case using .dup on the input string right back into the variable would be completely understandable. ie:

string someStringTransformationWithCOW(string x) {
  //if COW'd then
  x = x.dup;

  //...
  return x;
}

Course having the input as char[] rather than string makes more sense for on the fly changes before returning it...

Reply via email to