[Issue 21175] New: opAssign should be allowed to return void and let the compiler take care of chained assignments
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue Aug 18 21:39:28 UTC 2020
    
    
  
https://issues.dlang.org/show_bug.cgi?id=21175
          Issue ID: 21175
           Summary: opAssign should be allowed to return void and let the
                    compiler take care of chained assignments
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: andrei at erdani.com
The return value of opAssign should always be `this` of type `ref T`. Literally
anything else is a bug, and that makes for a poor convention. The compiler
should take care of all that. Means user code is free of the convention and can
return void.
Chained assignments should be lowered as follows. Currently e1 = e2 = e3 is
lowered as:
e1.opAssign(e2.opAssign(e3))
It should be lowered as:
(ref T x) { x.opAssign(e3); e1.opAssign(x); }(e2)
meaning e2 is evaluated first, then e3 is evaluated and assigned to (the result
of evaluating) e2, then then x is assigned to (the result of evaluating) e1.
--
    
    
More information about the Digitalmars-d-bugs
mailing list