http://d.puremagic.com/issues/show_bug.cgi?id=9281
--- Comment #2 from Daniel Kozak <kozz...@gmail.com> 2013-01-10 07:42:45 PST --- (In reply to comment #1) > Did this really work with 2.060? I cannot reproduce the "works 2.060". > > Column.opAssign is an immutable member function, then we can call it from > immutable object test1, but cannot call from mutable object test2. > > So, the error in test2 = "something else" is correct, as far as I know. Yes my fault, I try to simplify too much. Here is more detailed description Code which works on 2.060 and don`t compile on 2.061 module main; import std.algorithm; import std.array; immutable struct Column { string opAssign(V)(V tValue) { return tValue; } } class Ob2 { enum : Column { COLUM_A = Column() } immutable COLUMNS = [ COLUM_A, ]; } immutable test1 = Column(); void main(string[] args) { string where = test1 = "something"; // works ok std.stdio.writeln(where); where = (Ob2.COLUM_A = "something else"); // works 2.060, dont compile on 2.061 std.stdio.writeln(where); } However I find out more interesing thing. This code is almost same however it doesn`t work on 2.061 neither 2.060: module main; import std.algorithm; import std.array; immutable struct Column { string opAssign(V)(V tValue) { return tValue; } } class Ob2 { enum : Column { COLUM_A = Column() } // comment this code make it not compilable in 2.060 /*immutable COLUMNS = [ COLUM_A, ];*/ } immutable test1 = Column(); void main(string[] args) { string where = test1 = "something"; // works ok std.stdio.writeln(where); where = (Ob2.COLUM_A = "something else"); // dont compile on 2.060 and 2.061 std.stdio.writeln(where); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------