[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