Thread overview | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
October 08, 2007 [Issue 1553] New: foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=1553 Summary: foreach_reverse is allowed for delegates Product: D Version: 1.022 Platform: PC OS/Version: Windows Status: NEW Severity: enhancement Priority: P4 Component: DMD AssignedTo: bugzilla@digitalmars.com ReportedBy: thecybershadow@gmail.com Suggestion: do not allow to use delegates with foreach_reverse. Since, in the case of delegates, foreach_reverse is synonymous with foreach, it can be a cause of bugs, especially in the case of rewriting code that looped over a pre-built array to loop using a delegate. -- |
July 01, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 yebblies <yebblies@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid, patch Priority|P4 |P3 CC| |yebblies@gmail.com Platform|x86 |All Version|1.022 |D1 & D2 OS/Version|Windows |All Severity|enhancement |normal --- Comment #1 from yebblies <yebblies@gmail.com> 2011-07-01 14:44:15 EST --- https://github.com/D-Programming-Language/dmd/pull/184 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla@digitalmars.com Resolution| |WONTFIX --- Comment #2 from Walter Bright <bugzilla@digitalmars.com> 2011-07-01 18:24:24 PDT --- I don't think it's right to make foreach_reverse crippled compared with foreach. I'm going to mark as won't fix. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #3 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-07-01 18:29:03 PDT --- Walter, did you understand the bug report correctly? My 4-year-old explanation could have been better, but what I meant is that: foreach (v; someDelegate) { ... } did the exact same thing as foreach_reverse (v; someDelegate) { ... } Someone may try to use foreach_reverse intuitively over a delegate, hoping it'll "just work", and get unexpected results (as I have 4 years ago). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #4 from Walter Bright <bugzilla@digitalmars.com> 2011-07-01 18:48:10 PDT --- Yes, I understood your point. I agree that one could make an error this way. I disagree that the solution is to remove the feature. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #5 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-07-01 18:50:16 PDT --- Why? This is clearly an accepts-invalid bug! What would a better solution be, anyway? reverse_delegate? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #6 from Walter Bright <bugzilla@digitalmars.com> 2011-07-01 19:16:27 PDT --- The compiler cannot tell what the delegate does, so there's no way it can diagnose an error. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #7 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-07-01 19:18:00 PDT --- Exactly! We can only assume that all delegates are written for forward iteration. I am having trouble understanding your problem with disabling foreach_reverse with delegates specifically. You say it'd be removing a feature, but how can it be a feature if it neither is nor can be implemented? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 Jonathan M Davis <jmdavisProg@gmx.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jmdavisProg@gmx.com --- Comment #8 from Jonathan M Davis <jmdavisProg@gmx.com> 2011-07-01 19:32:08 PDT --- But why couldn't a delegate be written for reverse iteration? And if it does exactly the same thing for both foreach and foreach_reverse, I don't really see the problem. Granted, it may be a bit weird, but I don't see the bug. Though truth be told, I've been wondering whether foreach_reverse is actually supposed to be sticking around, given the general move towards ranges and the fact that foreach_reverse isn't actually mentioned in TDPL (at least, it's not in the index). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 02, 2011 [Issue 1553] foreach_reverse is allowed for delegates | ||||
---|---|---|---|---|
| ||||
Posted in reply to d-bugmail | http://d.puremagic.com/issues/show_bug.cgi?id=1553 --- Comment #9 from Vladimir Panteleev <thecybershadow@gmail.com> 2011-07-01 19:38:33 PDT --- (In reply to comment #8) > But why couldn't a delegate be written for reverse iteration? So put the semantics in the delegate name, instead of expecting the user to always use the correct one of the two semantically-opposite but actually synonymous keywords. This can easily become a point of confusion, and I'm surprised I need to elaborate in so much detail why this is plain bad. What's wrong with writing it like this? foreach (v; &foo.reverseIterator) { ... } If you start writing it like this: foreach_reverse (v; &foo.reverseIterator) Sooner or later someone will forget the second "reverse", the code will look and compile right, and work wrong! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation