digitalmars.D.bugs - [Issue 4603] New: array(iota(1, 0)) error
- d-bugmail puremagic.com (23/23) Aug 09 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (21/21) Aug 09 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (9/9) Aug 09 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (9/9) Aug 09 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (13/13) Aug 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (15/16) Aug 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (7/8) Aug 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (9/9) Aug 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (14/14) Aug 20 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (10/10) Jan 09 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (6/6) Jun 29 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (20/20) Apr 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4603
- d-bugmail puremagic.com (9/9) Apr 20 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4603
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Summary: array(iota(1, 0)) error Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: Phobos AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc This generates an 'Access Violation' with dmd 2.048beta: import std.range; void main() { array(iota(1, 0)); } The expected result of this array() is an empty dynamic array of signed integers. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kennytm gmail.com OS/Version|Windows |All If you write --- import std.range; import std.stdio; void main() { foreach (a; iota(1, 0)) { writeln(a); } } --- the program will never stop writing. Looks like an integer overflow bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Created an attachment (id=707) Patch for range.d to produce an empty range when pastLast <= current. This patch produces an empty range when pastLast <= current. But this is inconsistent with the behavior of floating point iota ranges. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Created an attachment (id=708) Patch for range.d to throw when pastLast <= current. This patch simply enforces pastLast > current, so it is consistent with the floating point iota range. But it may be less useful. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 09 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 David Simcha <dsimcha yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dsimcha yahoo.com Fixed in changeset 1901. I chose to throw in this case. The proper way to create an empty range would be to do iota(0, 0), or iota(1, 1). The main reason for this choice was consistency with array slicing. For example, if bounds checking is enabled, array[3..2] throws a RangeError. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Throwing? No, look at Python:[] It needs to return an empty range. This: foreach (i; iota(1, 0)) is the same as: foreach (i; 1 .. 0) Or: for (int i = 1; i < 0; i++) It's like an empty loop. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------range(1, 0)
Aug 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 And by the way, in Python This produces an empty string slice:'' -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------"abcdefg"[3:2]
Aug 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 David Simcha <dsimcha yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 bearophile_hugs eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | Thank you for improving this bug. But I reopen the bug because I think raising an error is the wrong design. As I have explained iota() is to be meant as the ranges in for/foreach loops, so iota(1, 0) is like an empty loop, it's not an error. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 20 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Andrei Alexandrescu <andrei metalanguage.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |ASSIGNED CC| |andrei metalanguage.com AssignedTo|nobody puremagic.com |andrei metalanguage.com -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 09 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4603 See also bug 6222 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 29 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4603 Brad Anderson <eco gnuk.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |eco gnuk.net This now seems to work as you want in DMD 2.059. The following: import std.stdio, std.range; void main() { auto empty_array = array(iota(1, 0)); writeln("type: ", typeof(empty_array).stringof, ", empty? ", empty_array.empty, ", contents: ", empty_array); } Outputs: type: int[], empty? true, contents: [] I'd say it can be closed and marked RESOLVED now. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4603 bearophile_hugs eml.cc changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 20 2012