Bug 6446 – Problem with iota(long)

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2011-08-06T19:47:58Z
Last change time
2017-09-07T12:50:28Z
Keywords
rejects-valid
Assigned to
No Owner
Creator
bearophile_hugs

Comments

Comment #0 by bearophile_hugs — 2011-08-06T19:47:58Z
I think this is a bug of iota() (or a problem in core.memory.GC.malloc): import std.range: iota; import std.array: array; void main() { auto a = array(iota(1L)); } DMD gives: ...\std\array.d(243): Error: function core.memory.GC.malloc (uint sz, uint ba = cast(uint)0) is not callable using argument types (ulong,BlkAttr) ...\std\array.d(243): Error: cannot implicitly convert expression (_param_0 * 8LU) of type ulong to uint ...\std\array.d(231): Error: cannot implicitly convert expression (_param_0) of type ulong to uint ...\std\array.d(194): Error: template instance std.array.arrayAllocImpl!(false,long[],ulong) error instantiating ...\std\array.d(42): instantiated from here: uninitializedArray!(long[],ulong) test.d(4): instantiated from here: array!(Result) ...\std\array.d(42): Error: template instance std.array.uninitializedArray!(long[],ulong) error instantiating test.d(4): instantiated from here: array!(Result) test.d(4): Error: template instance std.array.array!(Result) error instantiating
Comment #1 by issues.dlang — 2011-08-06T19:56:13Z
It compiles just fine with the latest master. I believe that that iota was taking a size_t before, which then didn't work with long on 32-bit systems. It was fixed in https://github.com/D-Programming-Language/phobos/commit/d08f0e6621e1ceb1d8a4cded975507f775c8857e I think that there was a bugzilla entry that went with it, but it's not in the changelog, so I don't know what it was.
Comment #2 by bearophile_hugs — 2011-08-07T05:08:24Z
I have just compiled the latest DMD, druntime and Phobos, and I see some errors still. Maybe it's my fault, I don't know.
Comment #3 by lovelydear — 2012-04-26T11:30:07Z
This still doesn't compile on 2.059 Win32
Comment #4 by hsteoh — 2014-08-07T21:39:30Z
Works on git HEAD (2.067a) on Linux/64.
Comment #5 by hsteoh — 2014-11-04T00:06:56Z
Unable to reproduce on git HEAD, Linux/64. Does this bug still happen? Can anyone else try to reproduce it (on Windows)?
Comment #6 by bearophile_hugs — 2014-11-04T01:05:15Z
(In reply to hsteoh from comment #5) > Unable to reproduce on git HEAD, Linux/64. Does this bug still happen? Can > anyone else try to reproduce it (on Windows)? On Windows32 now this gives: void main() { import std.range: iota; import std.array: array; auto a = 1L.iota.array; } ...\dmd2\src\phobos\std\array.d(47,43): Error: function std.array.array!(Result).array.trustedAllocateArray (uint n) is not callable using argument types (ulong) test.d(4,21): Error: template instance std.array.array!(Result) error instantiating
Comment #7 by razvan.nitu1305 — 2017-09-07T12:50:28Z
I just compiled and ran the exmample successfully with the latest dmd, druntime, phobos on linux 64-bit and with wine for windows 32 bit. Closing as WORKSFORME.