Thread overview
Case staments not collapsable in visual D
Oct 29, 2018
Michelle Long
Oct 29, 2018
Rainer Schuetze
Oct 30, 2018
Michelle Long
Nov 03, 2018
Rainer Schuetze
Nov 03, 2018
user1237
Nov 03, 2018
Michelle Long
October 29, 2018
can't collapse/fold a case statement in the editor for some reason ;/
October 29, 2018

On 29/10/2018 03:23, Michelle Long wrote:
> can't collapse/fold a case statement in the editor for some reason ;/

Makes sense, but you cannot do this neither in C++ nor C# aswell. I guess that it is this way because semantically "cases" are not statement blocks, but just labels.

BTW: bug reports and enhancements requests are less likely to be forgotten when added to the bug tracking system: https://issues.dlang.org/ (component visuald).
October 30, 2018
On Monday, 29 October 2018 at 07:48:28 UTC, Rainer Schuetze wrote:
>
>
> On 29/10/2018 03:23, Michelle Long wrote:
>> can't collapse/fold a case statement in the editor for some reason ;/
>
> Makes sense, but you cannot do this neither in C++ nor C# aswell. I guess that it is this way because semantically "cases" are not statement blocks, but just labels.
>
> BTW: bug reports and enhancements requests are less likely to be forgotten when added to the bug tracking system: https://issues.dlang.org/ (component visuald).

case statements are blocks. They might not be represented as such but they are semantically the same as blocks. The representation is irrelevant. Since, in D, every case must end with a break or return or throw, it means that the next case terminates the block automatically.

So, all that needs to be done, if it is possible is to collapse everything up to the next case statement or terminal }.

One could make it general for labels so one could collapse any label statement. Simply terminate up to the next label and or }.
November 03, 2018

On 30/10/2018 16:25, Michelle Long wrote:
> On Monday, 29 October 2018 at 07:48:28 UTC, Rainer Schuetze wrote:
>>
>>
>> On 29/10/2018 03:23, Michelle Long wrote:
>>> can't collapse/fold a case statement in the editor for some reason ;/
>>
>> Makes sense, but you cannot do this neither in C++ nor C# aswell. I guess that it is this way because semantically "cases" are not statement blocks, but just labels.
>>
>> BTW: bug reports and enhancements requests are less likely to be forgotten when added to the bug tracking system: https://issues.dlang.org/ (component visuald).
> 
> case statements are blocks. They might not be represented as such but they are semantically the same as blocks. The representation is irrelevant. Since, in D, every case must end with a break or return or throw, it means that the next case terminates the block automatically.
> 
> So, all that needs to be done, if it is possible is to collapse everything up to the next case statement or terminal }.

> 
> One could make it general for labels so one could collapse any label statement. Simply terminate up to the next label and or }.

I wasn't arguing against this, filed an enhancement request: https://issues.dlang.org/show_bug.cgi?id=19351

November 03, 2018
On Tuesday, 30 October 2018 at 15:25:28 UTC, Michelle Long wrote:
> On Monday, 29 October 2018 at 07:48:28 UTC, Rainer Schuetze wrote:
>> [...]
>
> case statements are blocks. They might not be represented as such but they are semantically the same as blocks. The representation is irrelevant. Since, in D, every case must end with a break or return or throw, it means that the next case terminates the block automatically.
>
> So, all that needs to be done, if it is possible is to collapse everything up to the next case statement or terminal }.
>
> One could make it general for labels so one could collapse any label statement. Simply terminate up to the next label and or }.

If the "case" deserve folding maybe just add a scope "{}" ? In my opinion case statements are often just a one liner, followed bu break and don't deserve folding.


November 03, 2018
On Saturday, 3 November 2018 at 08:28:23 UTC, user1237 wrote:
> On Tuesday, 30 October 2018 at 15:25:28 UTC, Michelle Long wrote:
>> On Monday, 29 October 2018 at 07:48:28 UTC, Rainer Schuetze wrote:
>>> [...]
>>
>> case statements are blocks. They might not be represented as such but they are semantically the same as blocks. The representation is irrelevant. Since, in D, every case must end with a break or return or throw, it means that the next case terminates the block automatically.
>>
>> So, all that needs to be done, if it is possible is to collapse everything up to the next case statement or terminal }.
>>
>> One could make it general for labels so one could collapse any label statement. Simply terminate up to the next label and or }.
>
> If the "case" deserve folding maybe just add a scope "{}" ? In my opinion case statements are often just a one liner, followed bu break and don't deserve folding.


Yeah, that might be a solution. It think avoiding having to do these types of "hacks" though are important because having to add superfluous stuff to code just to get a desired debugging experience is not good practice. It dirties up the source code adding junk that is not necessary.