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








Nick <Nick_member pathlink.com>