digitalmars.D.bugs - Bad length in value of T[a..b] = scalar
- Stewart Gordon (45/45) Sep 01 2004 Using DMD 0.100, Windows 98SE.
- Nick (5/8) Sep 01 2004 I don't agree that this is a bug. a[2..5] = 5 is an assignment, not a sl...
- Stewart Gordon (15/26) Sep 01 2004 By your logic, the same would apply to a[3] = 5 or an assignment to a
- Nick (6/14) Sep 01 2004 Ok, I can agree with that. But the docs say exactly nothing about this, ...
-
Stewart Gordon
(9/11)
Sep 01 2004
- Nick (4/11) Sep 01 2004 I was thinking something more specifically about arrays, but again I agr...
Using DMD 0.100, Windows 98SE. When a slice is assigned by a scalar, the value of the assignment expression has the length of the whole array, not that of the slice. ---------- import std.stdio; void show(int[] s) { foreach (int i; s) { writef("%d ", i); } writefln(); } void main() { int[] qwert = new int[6]; int[] yuiop; yuiop = qwert[2..5] = 3; show(yuiop); show(qwert[2..5] = 4); show(qwert[2..5]); show(qwert); show(yuiop[2..5] = qwert[1..4]); yuiop = qwert[2..5]; show(yuiop[1..3] = 6); writefln((yuiop[1..3] = 7).length); } ---------- Output: 3 3 3 0 0 0 4 4 4 0 0 0 4 4 4 0 0 4 4 4 0 0 4 4 6 6 4 3 Expected output: 3 3 3 4 4 4 4 4 4 0 0 4 4 4 0 0 4 4 6 6 2 Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Sep 01 2004
In article <ch44o1$211s$1 digitaldaemon.com>, Stewart Gordon says...Using DMD 0.100, Windows 98SE. When a slice is assigned by a scalar, the value of the assignment expression has the length of the whole array, not that of the slice.I don't agree that this is a bug. a[2..5] = 5 is an assignment, not a slice. The result of the assignment is the old array a with elements 2,3,4 set to 5, which is what should be returned. Nick
Sep 01 2004
Nick wrote:In article <ch44o1$211s$1 digitaldaemon.com>, Stewart Gordon says...By your logic, the same would apply to a[3] = 5 or an assignment to a class/struct/union member. The whole point of AssignExpression being an rvalue is that qwert = yuiop = asdfg; is identical to yuiop = asdfg; qwert = yuiop; except that yuiop is evaluated only once. Anyway, your description isn't what the bug is doing. Look at the output from my testcase again. Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.Using DMD 0.100, Windows 98SE. When a slice is assigned by a scalar, the value of the assignment expression has the length of the whole array, not that of the slice.I don't agree that this is a bug. a[2..5] = 5 is an assignment, not a slice. The result of the assignment is the old array a with elements 2,3,4 set to 5, which is what should be returned.
Sep 01 2004
In article <ch4h5a$280v$1 digitaldaemon.com>, Stewart Gordon says...The whole point of AssignExpression being an rvalue is that qwert = yuiop = asdfg; is identical to yuiop = asdfg; qwert = yuiop; except that yuiop is evaluated only once.Ok, I can agree with that. But the docs say exactly nothing about this, so I'm not really sure what I would call expected behaviour here.Anyway, your description isn't what the bug is doing. Look at the output from my testcase again.That looks like a bug, yep. It looks like it was intended to work the way you describe, but it doesn't. Nick
Sep 01 2004
Nick wrote: <snip>Ok, I can agree with that. But the docs say exactly nothing about this, so I'm not really sure what I would call expected behaviour here.<snip> You mean this doesn't count? http://www.digitalmars.com/d/expression.html#AssignExpression Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Sep 01 2004
In article <ch4nva$2alo$1 digitaldaemon.com>, Stewart Gordon says...Nick wrote: <snip>I was thinking something more specifically about arrays, but again I agree with you. The link you refer to should cover the array slice case as well. NickOk, I can agree with that. But the docs say exactly nothing about this, so I'm not really sure what I would call expected behaviour here.<snip> You mean this doesn't count? http://www.digitalmars.com/d/expression.html#AssignExpression
Sep 01 2004