aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api
diff options
context:
space:
mode:
authorFamiu Haque <famiuhaque@proton.me>2023-10-09 00:36:48 +0600
committerLewis Russell <me@lewisr.dev>2023-10-10 11:19:41 +0100
commit9ff6f73f838a1f90d09922448c434033ba5e094e (patch)
tree5368bcb5ddee303c299863fb59d7671d2958a342 /src/nvim/api
parenta2f17e97ec2d3767a978889320c1a9fb3d82d5b0 (diff)
downloadrneovim-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 'src/nvim/api')
-rw-r--r--src/nvim/api/autocmd.c2
-rw-r--r--src/nvim/api/options.c6
-rw-r--r--src/nvim/api/private/converter.c3
-rw-r--r--src/nvim/api/private/helpers.c10
-rw-r--r--src/nvim/api/win_config.c2
5 files changed, 5 insertions, 18 deletions
diff --git a/src/nvim/api/autocmd.c b/src/nvim/api/autocmd.c
index d19f44798b..d0efb58cb6 100644
--- a/src/nvim/api/autocmd.c
+++ b/src/nvim/api/autocmd.c
@@ -294,7 +294,7 @@ Array nvim_get_autocmds(Dict(get_autocmds) *opts, Error *err)
case kCallbackPartial:
PUT(autocmd_info, "callback", CSTR_AS_OBJ(callback_to_string(cb)));
break;
- default:
+ case kCallbackNone:
abort();
}
} else {
diff --git a/src/nvim/api/options.c b/src/nvim/api/options.c
index 5a75d10043..867d1d5e5c 100644
--- a/src/nvim/api/options.c
+++ b/src/nvim/api/options.c
@@ -146,16 +146,14 @@ static Object optval_as_object(OptVal o)
return BOOLEAN_OBJ(o.data.boolean);
case kNone:
return NIL;
- default:
- abort();
}
+ UNREACHABLE;
case kOptValTypeNumber:
return INTEGER_OBJ(o.data.number);
case kOptValTypeString:
return STRING_OBJ(o.data.string);
- default:
- abort();
}
+ UNREACHABLE;
}
/// Consume an API Object and convert it to an OptVal.
diff --git a/src/nvim/api/private/converter.c b/src/nvim/api/private/converter.c
index dc6928f4b9..10152cb3c8 100644
--- a/src/nvim/api/private/converter.c
+++ b/src/nvim/api/private/converter.c
@@ -363,9 +363,6 @@ bool object_to_vim(Object obj, typval_T *tv, Error *err)
tv->vval.v_string = xstrdup(name);
break;
}
-
- default:
- abort();
}
return true;
diff --git a/src/nvim/api/private/helpers.c b/src/nvim/api/private/helpers.c
index 25e752bea8..eaee94786c 100644
--- a/src/nvim/api/private/helpers.c
+++ b/src/nvim/api/private/helpers.c
@@ -610,9 +610,6 @@ void api_free_object(Object value)
case kObjectTypeLuaRef:
api_free_luaref(value.data.luaref);
break;
-
- default:
- abort();
}
}
@@ -800,10 +797,8 @@ Object copy_object(Object obj, Arena *arena)
case kObjectTypeLuaRef:
return LUAREF_OBJ(api_new_luaref(obj.data.luaref));
-
- default:
- abort();
}
+ UNREACHABLE;
}
void api_set_error(Error *err, ErrorType errType, const char *format, ...)
@@ -884,9 +879,8 @@ char *api_typename(ObjectType t)
return "Window";
case kObjectTypeTabpage:
return "Tabpage";
- default:
- abort();
}
+ UNREACHABLE;
}
HlMessage parse_hl_msg(Array chunks, Error *err)
diff --git a/src/nvim/api/win_config.c b/src/nvim/api/win_config.c
index ca7086ab7f..2fd30bc5a5 100644
--- a/src/nvim/api/win_config.c
+++ b/src/nvim/api/win_config.c
@@ -279,8 +279,6 @@ Dictionary config_put_bordertext(Dictionary config, FloatConfig *fconfig,
field_name = "footer";
field_pos_name = "footer_pos";
break;
- default:
- abort();
}
Array bordertext = virt_text_to_array(vt, true);