http://bugzilla.gdcproject.org/show_bug.cgi?id=8
--- Comment #14 from Iain Buclaw <ibuc...@gdcproject.org> 2014-02-13 19:57:41 GMT --- (In reply to comment #11) > OK. So do you want to fix this or shall I? I'm pretty tied up getting gdb D into shape, and working with a publishing company in reviewing a new D2 book, and doing the 2.065 merge - which depends on preliminary stuff such as eventual Visitor conversions almost *all* our glue code, and re-implement dfrontend/builtins.c into the glue cause the new revision of it in 2.065 is not GDC-friendly... The long route in GDC would be (doing this in my head): 1. d-codegen.cc(d_build_call): Lift the LINKd restriction in which caches arguments in a LTR fashion. 2. dfrontend/arrayops.c(AssignExp::buildArrayIdent, BinAssignExp::buildArrayIdent, AssignExp::buildArrayLoop, BinAssignExp::buildArrayLoop): Evaluate assign expressions left to right 3. Reverse the parameters for all arrayops in druntime. // a[] = b[] op value: (T[] a, T value, T[] b) => (T[] b, T value, T[] a) // a[] = b[] op c[] (T[] a, T[] c, T[] b) => (T[] b, T[] c, T[] a) // a[] += value (T[] a, value) => (value, T[] a) // a[] += b[] (T[] a, T[] b) => (T[] b, T[] a) 4. Test! 5. Push upstream, where someone will work out how to fix it in DMD. Unless Mr. Andrei thinks that a[] = b[] op c[] should be evaluated in order of: a[] -> b[] -> c[] Instead of keeping the current behaviour: b[] -> c[] -> a[] In which case, just do items number #1, #4 and #5 in the list above. With the additional step of at stage #4 fix old tests that relied on the old behaviour of evaluation. Regards Iain. -- Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching all bug changes.