digitalmars.D - Remove switch case fallthrough
- rempas (8/8) May 13 2021 Yeah yeah I know I know, Code that looks like C should have the
- IGotD- (6/14) May 13 2021 In practice this is possible by just add another keyword.
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (2/7) May 13 2021 Just use a different keyword than "case"? Like "when"?
- rempas (4/11) May 13 2021 Exactly! We can mix things up a little! Or even add a new
- IGotD- (5/7) May 13 2021 That could be possibility to add pattern matching capabilities to
- rempas (4/12) May 13 2021 Not "should", they "must" do it! Like I said, a language must
- Imperatorn (3/15) May 13 2021 Please don't add *more* to the language. Just remove fallthrough.
- Adam D. Ruppe (3/5) May 13 2021 Or better yet just leave it alone (existing deprecation to error
- Imperatorn (3/9) May 13 2021 Well, yeah. I personally don't really have a problem with adding
- Mathias LANG (4/10) May 13 2021 Exactly this. The error should not go away, because it would be a
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (2/4) May 13 2021 That makes all C code break when ported to D with no warning.
- rempas (3/7) May 13 2021 Indeed, warning is needed when and if this gets implemented.
- Ogi (34/36) May 14 2021 Yes. Rather than changing `switch` behavior, we could add a whole
- David Gileadi (3/9) May 14 2021 `new switch` ;)
- ag0aep6g (2/11) May 14 2021 `switch with out break` :P
- David Gileadi (2/17) May 14 2021 +1000
- Andrei Alexandrescu (2/17) May 15 2021 That's just fantastic.
- Patrick Schluter (2/11) May 15 2021 `static switch` ;-)
- Dennis (18/21) May 14 2021 I actually suspect there's a non-vocal group of D users
- Ogi (29/39) May 21 2021 This particular example can be emulated with this template:
- Paul Backus (5/21) May 21 2021 There's also [`std.algorithm.comparison.predSwitch`][1] in
- Basile B. (4/11) May 13 2021 or "on", if this does not cause problems with the try catch
- Steven Schveighoffer (8/16) May 13 2021 It's already deprecated, since 2.072. It's also been a warning since
- rempas (4/14) May 13 2021 My mistake for not being clear, like I said to the other
- Steven Schveighoffer (4/21) May 13 2021 First step is to make implicit fallthrough an error instead of a
- rempas (5/9) May 13 2021 Exactly! I hope the community will think about it. Like I said, I
- Mike Parker (5/15) May 13 2021 Implicit fallthrough was not deprecated "just to do it". There
- rempas (7/11) May 13 2021 Yeah but we have to add "break" every time? No ones uses this
- Mike Parker (3/9) May 13 2021 But C supports implicit fallthrough, so by deprecating it, we did
- Mike Parker (7/9) May 14 2021 Here's what the C++ Core Guidelines say:
- Paulo Pinto (4/14) May 14 2021 Additionally, since C++17, there is the fallthrough attribute to
- Mike Parker (3/6) May 14 2021 Man that's ugly. I like our `goto case` better.
- Ola Fosheim =?UTF-8?B?R3LDuHN0YWQ=?= (5/6) May 14 2021 It is an attribute to silence optional warnings (basically to
- Patrick Schluter (7/15) May 14 2021 In C gcc uses comments to silence the warning.
- Imperatorn (3/11) May 14 2021 Lol is this real life? It's starting to look like an alien
- Patrick Schluter (3/14) May 14 2021 And even C compilers warn now about implicit fallthrough (gcc
- Walter Bright (2/3) May 13 2021 I used to, but I've come around :-)
- Paul Backus (11/19) May 13 2021 switch case fallthrough is already considered deprecated. If you
- IGotD- (3/7) May 13 2021 I kind of read between the lines and got it to that TS wanted to
- rempas (3/13) May 13 2021 Yes this is what I mean! There is no reason to have to use break!
- Basile B. (4/12) May 13 2021 what are you proposing is not clear. Is that
Yeah yeah I know I know, Code that looks like C should have the same behavior to C. I've asked about that and I got the same answer. But come one! We can make an exception on this one! We don't need that in D as we can add more cases. I really love the work the contributors do with D but IMO is things like that who really stop D from REALLY going forward in the next level. Doing things just for doing them NEVER helped anyone!
May 13 2021
On Thursday, 13 May 2021 at 13:28:07 UTC, rempas wrote:Yeah yeah I know I know, Code that looks like C should have the same behavior to C. I've asked about that and I got the same answer. But come one! We can make an exception on this one! We don't need that in D as we can add more cases. I really love the work the contributors do with D but IMO is things like that who really stop D from REALLY going forward in the next level. Doing things just for doing them NEVER helped anyone!In practice this is possible by just add another keyword. Something like "switch2", "switchb", can't really come up with good name. Then you just have a switch with break as default. What I have against it is that a new type of bugs will occur where the programmers accidentally mix up the two.
May 13 2021
On Thursday, 13 May 2021 at 13:55:10 UTC, IGotD- wrote:In practice this is possible by just add another keyword. Something like "switch2", "switchb", can't really come up with good name. Then you just have a switch with break as default. What I have against it is that a new type of bugs will occur where the programmers accidentally mix up the two.Just use a different keyword than "case"? Like "when"?
May 13 2021
On Thursday, 13 May 2021 at 14:12:40 UTC, Ola Fosheim Grøstad wrote:On Thursday, 13 May 2021 at 13:55:10 UTC, IGotD- wrote:Exactly! We can mix things up a little! Or even add a new statement called "match" idkIn practice this is possible by just add another keyword. Something like "switch2", "switchb", can't really come up with good name. Then you just have a switch with break as default. What I have against it is that a new type of bugs will occur where the programmers accidentally mix up the two.Just use a different keyword than "case"? Like "when"?
May 13 2021
On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:Exactly! We can mix things up a little! Or even add a new statement called "match" idkThat could be possibility to add pattern matching capabilities to D and renew switch that way and add new features as well. D already has some kind of "match" but implemented as a library, maybe D should extend that and bring into the language.
May 13 2021
On Thursday, 13 May 2021 at 14:34:15 UTC, IGotD- wrote:On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:Not "should", they "must" do it! Like I said, a language must always move forward! However I said my opinion, now it's up to them to decide if they want to do it or not...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThat could be possibility to add pattern matching capabilities to D and renew switch that way and add new features as well. D already has some kind of "match" but implemented as a library, maybe D should extend that and bring into the language.
May 13 2021
On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:On Thursday, 13 May 2021 at 14:12:40 UTC, Ola Fosheim Grøstad wrote:Please don't add *more* to the language. Just remove fallthrough. Done.On Thursday, 13 May 2021 at 13:55:10 UTC, IGotD- wrote:Exactly! We can mix things up a little! Or even add a new statement called "match" idkIn practice this is possible by just add another keyword. Something like "switch2", "switchb", can't really come up with good name. Then you just have a switch with break as default. What I have against it is that a new type of bugs will occur where the programmers accidentally mix up the two.Just use a different keyword than "case"? Like "when"?
May 13 2021
On Thursday, 13 May 2021 at 16:51:07 UTC, Imperatorn wrote:Please don't add *more* to the language. Just remove fallthrough. Done.Or better yet just leave it alone (existing deprecation to error is ok though). The explicit status quo is a solid situation.
May 13 2021
On Thursday, 13 May 2021 at 16:56:58 UTC, Adam D. Ruppe wrote:On Thursday, 13 May 2021 at 16:51:07 UTC, Imperatorn wrote:Well, yeah. I personally don't really have a problem with adding break. I always do it anywayPlease don't add *more* to the language. Just remove fallthrough. Done.Or better yet just leave it alone (existing deprecation to error is ok though). The explicit status quo is a solid situation.
May 13 2021
On Thursday, 13 May 2021 at 16:56:58 UTC, Adam D. Ruppe wrote:On Thursday, 13 May 2021 at 16:51:07 UTC, Imperatorn wrote:Exactly this. The error should not go away, because it would be a major silent difference when porting code from C. And common, adding `break` doesn't have any kind of objective downside.Please don't add *more* to the language. Just remove fallthrough. Done.Or better yet just leave it alone (existing deprecation to error is ok though). The explicit status quo is a solid situation.
May 13 2021
On Thursday, 13 May 2021 at 16:51:07 UTC, Imperatorn wrote:Please don't add *more* to the language. Just remove fallthrough. Done.That makes all C code break when ported to D with no warning.
May 13 2021
On Thursday, 13 May 2021 at 17:16:01 UTC, Ola Fosheim Grøstad wrote:On Thursday, 13 May 2021 at 16:51:07 UTC, Imperatorn wrote:Indeed, warning is needed when and if this gets implemented.Please don't add *more* to the language. Just remove fallthrough. Done.That makes all C code break when ported to D with no warning.
May 13 2021
On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:Exactly! We can mix things up a little! Or even add a new statement called "match" idkYes. Rather than changing `switch` behavior, we could add a whole different statement. Additionally, we could allow it to operate on non-constants. Basically like an `if .. else if` chain, but with better syntax. We could also make it more powerful, implementing pattern matching. And the compiler could rewrite `match` statement as the standard `switch` statement if it detects that all case values are known at compile time. That was in my wishlist for D for a long time. I find both `switch` and `if .. else if` awkward, we could do better than that. But it seems we are in a minority here. Named arguments and string interpolation are far more popular and important features but we are still waiting for them. There’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`. Since `case` statements inside `if switch` are not labels, we should probably bring them in line with statements like `if`: require curly braces if there’s more than one line, and parenthesis surrounding the condition. ```D int i = 42, a = 10, b = 20; if switch (i) { case (a) "i == a".writeln; case (b) { "i == b".writeln; someFunction(); } default { "oh no".writeln; } } ```
May 14 2021
On 5/14/21 12:39 PM, Ogi wrote:On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThere’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`.`new switch` ;)
May 14 2021
On Friday, 14 May 2021 at 20:53:09 UTC, David Gileadi wrote:On 5/14/21 12:39 PM, Ogi wrote:`switch with out break` :POn Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThere’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`.`new switch` ;)
May 14 2021
On 5/14/21 3:40 PM, ag0aep6g wrote:On Friday, 14 May 2021 at 20:53:09 UTC, David Gileadi wrote:+1000On 5/14/21 12:39 PM, Ogi wrote:`switch with out break` :POn Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThere’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`.`new switch` ;)
May 14 2021
On 5/14/21 6:40 PM, ag0aep6g wrote:On Friday, 14 May 2021 at 20:53:09 UTC, David Gileadi wrote:That's just fantastic.On 5/14/21 12:39 PM, Ogi wrote:`switch with out break` :POn Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThere’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`.`new switch` ;)
May 15 2021
On Friday, 14 May 2021 at 20:53:09 UTC, David Gileadi wrote:On 5/14/21 12:39 PM, Ogi wrote:`static switch` ;-)On Thursday, 13 May 2021 at 14:25:53 UTC, rempas wrote:...Exactly! We can mix things up a little! Or even add a new statement called "match" idkThere’s one more problem: Walter et al. always avoid adding new keywords to the language, preferring to reuse the existing ones whenever possible. Well, we could use `if switch`.`new switch` ;)
May 15 2021
On Friday, 14 May 2021 at 19:39:09 UTC, Ogi wrote:But it seems we are in a minority here. Named arguments and string interpolation are far more popular and important features but we are still waiting for them.I actually suspect there's a non-vocal group of D users dissatisfied with the old switch, though I don't think there's consensus on what the new switch would look like. expressions](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operator /switch-expression) look appealing, and they are compatible with D's syntax. Here's what the basic form looks like: ```D void main() { int x = 3; string name = x switch { 0 => "zero", 1 => "one", 2 => "two", }; } ``` Examples with pattern-matching and case guards can be found in the link.
May 14 2021
On Friday, 14 May 2021 at 20:58:57 UTC, Dennis wrote:```D void main() { int x = 3; string name = x switch { 0 => "zero", 1 => "one", 2 => "two", }; } ```This particular example can be emulated with this template: ```D template mapSwitch(alias map) { import std.traits; alias T = KeyType!(typeof(map)); auto mapSwitch(T value) { switch (value) { static foreach (key; map.keys) { case key: return map[key]; } default: assert(0); } } } void main() { int x = 2; string name = x.mapSwitch!([ 0 : `zero`, 1 : `one`, 2 : `two`, ]); } ``` Both the keys and the values must be known at compile time though. We can’t go around this by using lambdas because D doesn’t support passing function pointers as template parameters.
May 21 2021
On Friday, 21 May 2021 at 19:25:22 UTC, Ogi wrote:On Friday, 14 May 2021 at 20:58:57 UTC, Dennis wrote:There's also [`std.algorithm.comparison.predSwitch`][1] in Phobos, which does something similar. [1]: http://phobos.dpldocs.info/std.algorithm.comparison.predSwitch.html```D void main() { int x = 3; string name = x switch { 0 => "zero", 1 => "one", 2 => "two", }; } ```This particular example can be emulated with this template: ```D template mapSwitch(alias map) { ```
May 21 2021
On Thursday, 13 May 2021 at 14:12:40 UTC, Ola Fosheim Grøstad wrote:On Thursday, 13 May 2021 at 13:55:10 UTC, IGotD- wrote:or "on", if this does not cause problems with the try catch construct.In practice this is possible by just add another keyword. Something like "switch2", "switchb", can't really come up with good name. Then you just have a switch with break as default. What I have against it is that a new type of bugs will occur where the programmers accidentally mix up the two.Just use a different keyword than "case"? Like "when"?
May 13 2021
On 5/13/21 9:28 AM, rempas wrote:Yeah yeah I know I know, Code that looks like C should have the same behavior to C. I've asked about that and I got the same answer. But come one! We can make an exception on this one! We don't need that in D as we can add more cases.It's already deprecated, since 2.072. It's also been a warning since 2.054. I'm not sure if this is intended to be removed or not, but removing it today would put it at a 4.5 year deprecation period, and 10 years since it's been a warning.I really love the work the contributors do with D but IMO is things like that who really stop D from REALLY going forward in the next level. Doing things just for doing them NEVER helped anyone!Nobody thinks case fallthrough is good, this is why it's a warning and deprecated. -Steve
May 13 2021
On Thursday, 13 May 2021 at 14:15:15 UTC, Steven Schveighoffer wrote:On 5/13/21 9:28 AM, rempas wrote:My mistake for not being clear, like I said to the other comments, I mean that we should not need the "break" anymore.[...]It's already deprecated, since 2.072. It's also been a warning since 2.054. I'm not sure if this is intended to be removed or not, but removing it today would put it at a 4.5 year deprecation period, and 10 years since it's been a warning.[...]Nobody thinks case fallthrough is good, this is why it's a warning and deprecated. -Steve
May 13 2021
On 5/13/21 10:27 AM, rempas wrote:On Thursday, 13 May 2021 at 14:15:15 UTC, Steven Schveighoffer wrote:First step is to make implicit fallthrough an error instead of a deprecation. Then after a time, we might be able to make break optional. -SteveOn 5/13/21 9:28 AM, rempas wrote:My mistake for not being clear, like I said to the other comments, I mean that we should not need the "break" anymore.[...]It's already deprecated, since 2.072. It's also been a warning since 2.054. I'm not sure if this is intended to be removed or not, but removing it today would put it at a 4.5 year deprecation period, and 10 years since it's been a warning.[...]Nobody thinks case fallthrough is good, this is why it's a warning and deprecated.
May 13 2021
On Thursday, 13 May 2021 at 16:48:36 UTC, Steven Schveighoffer wrote:First step is to make implicit fallthrough an error instead of a deprecation. Then after a time, we might be able to make break optional. -SteveExactly! I hope the community will think about it. Like I said, I don't think having some stuff like they are just to do it is a good thing for anyone.
May 13 2021
On Thursday, 13 May 2021 at 17:52:52 UTC, rempas wrote:On Thursday, 13 May 2021 at 16:48:36 UTC, Steven Schveighoffer wrote:Implicit fallthrough was not deprecated "just to do it". There were reasons. Doing so caught bugs and was generally well-received. Example: https://forum.dlang.org/post/lgoda9$23dc$1 digitalmars.comFirst step is to make implicit fallthrough an error instead of a deprecation. Then after a time, we might be able to make break optional. -SteveExactly! I hope the community will think about it. Like I said, I don't think having some stuff like they are just to do it is a good thing for anyone.
May 13 2021
On Friday, 14 May 2021 at 00:42:47 UTC, Mike Parker wrote:Implicit fallthrough was not deprecated "just to do it". There were reasons. Doing so caught bugs and was generally well-received. Example: https://forum.dlang.org/post/lgoda9$23dc$1 digitalmars.comYeah but we have to add "break" every time? No ones uses this feature anymore (thus the warnings) because we can add more cases. This is what I mean by saying "doing things just to do them". While I agree that code that looks like C should act like C but I think we can make one exception here! But anyway just my opinion
May 13 2021
On Friday, 14 May 2021 at 06:21:10 UTC, rempas wrote:Yeah but we have to add "break" every time? No ones uses this feature anymore (thus the warnings) because we can add more cases. This is what I mean by saying "doing things just to do them". While I agree that code that looks like C should act like C but I think we can make one exception here! But anyway just my opinionBut C supports implicit fallthrough, so by deprecating it, we did make an exception. Ans it's a good exception to make.
May 13 2021
On Friday, 14 May 2021 at 06:56:55 UTC, Mike Parker wrote:But C supports implicit fallthrough, so by deprecating it, we did make an exception. Ans it's a good exception to make.Here's what the C++ Core Guidelines say: "Always end a non-empty case with a break. Accidentally leaving out a break is a fairly common bug. A deliberate fallthrough can be a maintenance hazard and should be rare and explicit." This is the same reason it's deprecated in D. https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es78-dont-rely-on-implicit-fallthrough-in-switch-statements
May 14 2021
On Friday, 14 May 2021 at 07:00:50 UTC, Mike Parker wrote:On Friday, 14 May 2021 at 06:56:55 UTC, Mike Parker wrote:Additionally, since C++17, there is the fallthrough attribute to be explicit that the C behaviour is actually intended. https://en.cppreference.com/w/cpp/language/attributes/fallthroughBut C supports implicit fallthrough, so by deprecating it, we did make an exception. Ans it's a good exception to make.Here's what the C++ Core Guidelines say: "Always end a non-empty case with a break. Accidentally leaving out a break is a fairly common bug. A deliberate fallthrough can be a maintenance hazard and should be rare and explicit." This is the same reason it's deprecated in D. https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es78-dont-rely-on-implicit-fallthrough-in-switch-statements
May 14 2021
On Friday, 14 May 2021 at 08:24:46 UTC, Paulo Pinto wrote: ines.md#es78-dont-rely-on-implicit-fallthrough-in-switch-statementsAdditionally, since C++17, there is the fallthrough attribute to be explicit that the C behaviour is actually intended. https://en.cppreference.com/w/cpp/language/attributes/fallthroughMan that's ugly. I like our `goto case` better.
May 14 2021
On Friday, 14 May 2021 at 08:37:19 UTC, Mike Parker wrote:Man that's ugly. I like our `goto case` better.It is an attribute to silence optional warnings (basically to support "linting"). It is consistent with other silencing attributes. The C++ language does fall through.
May 14 2021
On Friday, 14 May 2021 at 08:37:19 UTC, Mike Parker wrote:On Friday, 14 May 2021 at 08:24:46 UTC, Paulo Pinto wrote: ines.md#es78-dont-rely-on-implicit-fallthrough-in-switch-statementsIn C gcc uses comments to silence the warning. ``` case 5: ... /* falltrough */ case 6: ... ```Additionally, since C++17, there is the fallthrough attribute to be explicit that the C behaviour is actually intended. https://en.cppreference.com/w/cpp/language/attributes/fallthroughMan that's ugly. I like our `goto case` better.
May 14 2021
On Friday, 14 May 2021 at 08:37:19 UTC, Mike Parker wrote:On Friday, 14 May 2021 at 08:24:46 UTC, Paulo Pinto wrote: ines.md#es78-dont-rely-on-implicit-fallthrough-in-switch-statementsLol is this real life? It's starting to look like an alien languageAdditionally, since C++17, there is the fallthrough attribute to be explicit that the C behaviour is actually intended. https://en.cppreference.com/w/cpp/language/attributes/fallthroughMan that's ugly. I like our `goto case` better.
May 14 2021
On Friday, 14 May 2021 at 06:56:55 UTC, Mike Parker wrote:On Friday, 14 May 2021 at 06:21:10 UTC, rempas wrote:And even C compilers warn now about implicit fallthrough (gcc since version 8 with -Wall).Yeah but we have to add "break" every time? No ones uses this feature anymore (thus the warnings) because we can add more cases. This is what I mean by saying "doing things just to do them". While I agree that code that looks like C should act like C but I think we can make one exception here! But anyway just my opinionBut C supports implicit fallthrough, so by deprecating it, we did make an exception. Ans it's a good exception to make.
May 14 2021
On 5/13/2021 7:15 AM, Steven Schveighoffer wrote:Nobody thinks case fallthrough is good, this is why it's a warning and deprecated.I used to, but I've come around :-)
May 13 2021
On Thursday, 13 May 2021 at 13:28:07 UTC, rempas wrote:Yeah yeah I know I know, Code that looks like C should have the same behavior to C. I've asked about that and I got the same answer. But come one! We can make an exception on this one! We don't need that in D as we can add more cases. I really love the work the contributors do with D but IMO is things like that who really stop D from REALLY going forward in the next level. Doing things just for doing them NEVER helped anyone!switch case fallthrough is already considered deprecated. If you use it, the compiler will produce the following warning: Deprecation: switch case fallthrough - use 'goto case;' if intended I'm not sure what the process is for turning a deprecation like this into an error (maybe a -preview/-revert switch is needed?), but presumably the intent is for that to happen at some point. In the meantime, you can do it manually by compiling with the `-de` switch, which tells the compiler to give errors instead of warnings for deprecations.
May 13 2021
On Thursday, 13 May 2021 at 14:15:39 UTC, Paul Backus wrote:switch case fallthrough is already considered deprecated. If you use it, the compiler will produce the following warning: Deprecation: switch case fallthrough - use 'goto case;' if intendedI kind of read between the lines and got it to that TS wanted to remove the mandatory break completely. Could be wrong though.
May 13 2021
On Thursday, 13 May 2021 at 14:22:21 UTC, IGotD- wrote:On Thursday, 13 May 2021 at 14:15:39 UTC, Paul Backus wrote:Yes this is what I mean! There is no reason to have to use break! It is just annoying imo!switch case fallthrough is already considered deprecated. If you use it, the compiler will produce the following warning: Deprecation: switch case fallthrough - use 'goto case;' if intendedI kind of read between the lines and got it to that TS wanted to remove the mandatory break completely. Could be wrong though.
May 13 2021
On Thursday, 13 May 2021 at 13:28:07 UTC, rempas wrote:Yeah yeah I know I know, Code that looks like C should have the same behavior to C. I've asked about that and I got the same answer. But come one! We can make an exception on this one! We don't need that in D as we can add more cases. I really love the work the contributors do with D but IMO is things like that who really stop D from REALLY going forward in the next level. Doing things just for doing them NEVER helped anyone!what are you proposing is not clear. Is that "turn the deprecation into an error for good" or "remove the deprecation" ?
May 13 2021