[Issue 6912] const(T)[]/immutable(T)[] can be implicitly cast to inout(const(T)[])/inout(immutable(T)[])

2011-11-10 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6912


Steven Schveighoffer schvei...@yahoo.com changed:

   What|Removed |Added

   Keywords|rejects-valid   |accepts-invalid


--- Comment #4 from Steven Schveighoffer schvei...@yahoo.com 2011-11-10 
05:36:46 PST ---
I think this should be accepts-invalid, since the given example code should not
compile.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6912] const(T)[]/immutable(T)[] can be implicitly cast to inout(const(T)[])/inout(immutable(T)[])

2011-11-10 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6912



--- Comment #5 from Kenji Hara k.hara...@gmail.com 2011-11-10 06:07:48 PST ---
(In reply to comment #4)
 I think this should be accepts-invalid, since the given example code should 
 not
 compile.

Wow, I'm sorry, and thank you for your fix.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6912] const(T)[]/immutable(T)[] can be implicitly cast to inout(const(T)[])/inout(immutable(T)[])

2011-11-10 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6912



--- Comment #6 from Steven Schveighoffer schvei...@yahoo.com 2011-11-10 
06:49:38 PST ---
(In reply to comment #5)
 (In reply to comment #4)
  I think this should be accepts-invalid, since the given example code should 
  not
  compile.
 
 Wow, I'm sorry, and thank you for your fix.

Don't worry about it!  The main fix is the patch, my change was a nitpick :)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6912] const(T[])/immutable(T[]) can be implicitly cast to inout(const(T)[])/inout(immutable(T)[])

2011-11-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6912


timon.g...@gmx.ch changed:

   What|Removed |Added

Summary|non-transitivity of inout   |const(T[])/immutable(T[])
   |breaks const system |can be implicitly cast to
   ||inout(const(T)[])/inout(imm
   ||utable(T)[])


--- Comment #2 from timon.g...@gmx.ch 2011-11-09 08:58:10 PST ---
(In reply to comment #1)
 inout a = q;
 
 This line should fail to compile.  const does not implicitly cast to inout.
 

Yes, but the issue here is that it casts to inout(const(int)[]). (dmd rejects
casting const(int[]) to inout(int[]) for exampe)

 Note that:
 
 immutable a = q;
 
 doesn't work.  inout should follow the same restrictions.
 
 I don't think this has to do with transitivity (and indeed, inout cannot
 override const or immutable).  It's just a simple case of inout cannot be
 implicitly cast from something else.
 
 Remember, inout can get implicitly cast back to immutable or mutable upon
 function return.  I don't think inout should override *any* qualifiers without
 casts.

You are right, it is not a transitivity/overriding issue.

Currently inout(const(T)) == inout(immutable(T)) == inout(T). That is bad, for
example, how to represent the element type of inout(const(char)[]) ? (DMD
treats it as const(char), which is obviously wrong, it should be
inout(const(char)).)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 6912] const(T)[]/immutable(T)[] can be implicitly cast to inout(const(T)[])/inout(immutable(T)[])

2011-11-09 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=6912


Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

   Keywords||patch, rejects-valid
   Platform|Other   |All


--- Comment #3 from Kenji Hara k.hara...@gmail.com 2011-11-09 21:38:49 PST ---
https://github.com/D-Programming-Language/dmd/pull/504

This patch will forbid some conversions like follows.
e.g. const(int)[]to inout(const(int)[])
 const(int)[int] to inout(const(int)[int]).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---