diff options
author | Famiu Haque <famiuhaque@proton.me> | 2023-10-09 00:36:48 +0600 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2023-10-10 11:19:41 +0100 |
commit | 9ff6f73f838a1f90d09922448c434033ba5e094e (patch) | |
tree | 5368bcb5ddee303c299863fb59d7671d2958a342 /runtime | |
parent | a2f17e97ec2d3767a978889320c1a9fb3d82d5b0 (diff) | |
download | rneovim-9ff6f73f838a1f90d09922448c434033ba5e094e.tar.gz rneovim-9ff6f73f838a1f90d09922448c434033ba5e094e.tar.bz2 rneovim-9ff6f73f838a1f90d09922448c434033ba5e094e.zip |
refactor: allow not having a `default` case for enum
Problem: The style guide states that all switch statements that are not conditional on an enum must have a `default` case, but does not give any explicit guideline for switch statements that are conditional on enums. As a result, a `default` case is added in many enum switch statements, even when the switch statement is exhaustive. This is not ideal because it removes the ability to have compiler errors to easily detect unchanged switch statements when a new possible value for an enum is added.
Solution: Add explicit guidelines for switch statements that are conditional on an enum, clarifying that a `default` case is not necessary if the switch statement is exhaustive. Also refactor pre-existing code with unnecessary `default` cases.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/dev_style.txt | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/runtime/doc/dev_style.txt b/runtime/doc/dev_style.txt index 79e758a11e..0bc27ced15 100644 --- a/runtime/doc/dev_style.txt +++ b/runtime/doc/dev_style.txt @@ -859,6 +859,33 @@ execute, simply use `abort()`: >c abort(); } +Switch statements that are conditional on an enumerated value should not have +a `default` case if it is exhaustive. Explicit case labels are preferred over +`default`, even if it leads to multiple case labels for the same code. For +example, instead of: >c + + case A: + ... + case B: + ... + case C: + ... + default: + ... + +You should use: >c + + case A: + ... + case B: + ... + case C: + ... + case D: + case E: + case F: + ... + Return Values ~ Do not needlessly surround the `return` expression with parentheses. |