patch 9.0.1183: code is indented more than necessary
Problem: Code is indented more than necessary.
Solution: Use an early return where it makes sense. (Yegappan Lakshmanan,
closes #11805)
diff --git a/src/if_lua.c b/src/if_lua.c
index 78bc190..6941789 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -505,18 +505,20 @@
{
void *p = lua_touserdata(L, ud);
- if (p != NULL) // value is userdata?
+ if (p == NULL)
+ return NULL;
+
+ // value is userdata
+ if (lua_getmetatable(L, ud)) // does it have a metatable?
{
- if (lua_getmetatable(L, ud)) // does it have a metatable?
+ luaV_getfield(L, tname); // get metatable
+ if (lua_rawequal(L, -1, -2)) // MTs match?
{
- luaV_getfield(L, tname); // get metatable
- if (lua_rawequal(L, -1, -2)) // MTs match?
- {
- lua_pop(L, 2); // MTs
- return p;
- }
+ lua_pop(L, 2); // MTs
+ return p;
}
}
+
return NULL;
}
@@ -1090,17 +1092,19 @@
dictitem_T *di = dict_find(d, key, -1);
if (di == NULL)
- lua_pushnil(L);
- else
{
- luaV_pushtypval(L, &di->di_tv);
- if (di->di_tv.v_type == VAR_FUNC) // funcref?
- {
- luaV_Funcref *f = (luaV_Funcref *) lua_touserdata(L, -1);
- f->self = d; // keep "self" reference
- d->dv_refcount++;
- }
+ lua_pushnil(L);
+ return 1;
}
+
+ luaV_pushtypval(L, &di->di_tv);
+ if (di->di_tv.v_type == VAR_FUNC) // funcref?
+ {
+ luaV_Funcref *f = (luaV_Funcref *) lua_touserdata(L, -1);
+ f->self = d; // keep "self" reference
+ d->dv_refcount++;
+ }
+
return 1;
}
@@ -1235,20 +1239,22 @@
blob_T *b = luaV_unbox(L, luaV_Blob, 1);
if (b->bv_lock)
luaL_error(L, "blob is locked");
- if (lua_isnumber(L, 2))
+
+ if (!lua_isnumber(L, 2))
+ return 0;
+
+ long len = blob_len(b);
+ int idx = luaL_checkinteger(L, 2);
+ int val = luaL_checkinteger(L, 3);
+ if (idx < len || (idx == len && ga_grow(&b->bv_ga, 1) == OK))
{
- long len = blob_len(b);
- int idx = luaL_checkinteger(L, 2);
- int val = luaL_checkinteger(L, 3);
- if (idx < len || (idx == len && ga_grow(&b->bv_ga, 1) == OK))
- {
- blob_set(b, idx, (char_u) val);
- if (idx == len)
- ++b->bv_ga.ga_len;
- }
- else
- luaL_error(L, "index out of range");
+ blob_set(b, idx, (char_u) val);
+ if (idx == len)
+ ++b->bv_ga.ga_len;
}
+ else
+ luaL_error(L, "index out of range");
+
return 0;
}
@@ -1943,30 +1949,34 @@
if (initarg && lua_type(L, 1) != LUA_TTABLE)
luaL_error(L, "table expected, got %s", luaL_typename(L, 1));
+
l = list_alloc();
if (l == NULL)
- lua_pushnil(L);
- else
{
- luaV_newlist(L, l);
- if (initarg) // traverse table to init list
- {
- int notnil, i = 0;
- typval_T v;
- do
- {
- lua_rawgeti(L, 1, ++i);
- notnil = !lua_isnil(L, -1);
- if (notnil)
- {
- luaV_checktypval(L, -1, &v, "vim.list");
- list_append_tv(l, &v);
- clear_tv(&v);
- }
- lua_pop(L, 1); // value
- } while (notnil);
- }
+ lua_pushnil(L);
+ return 1;
}
+
+ luaV_newlist(L, l);
+ if (!initarg)
+ return 1;
+
+ // traverse table to init list
+ int notnil, i = 0;
+ typval_T v;
+ do
+ {
+ lua_rawgeti(L, 1, ++i);
+ notnil = !lua_isnil(L, -1);
+ if (notnil)
+ {
+ luaV_checktypval(L, -1, &v, "vim.list");
+ list_append_tv(l, &v);
+ clear_tv(&v);
+ }
+ lua_pop(L, 1); // value
+ } while (notnil);
+
return 1;
}
@@ -1978,43 +1988,47 @@
if (initarg && lua_type(L, 1) != LUA_TTABLE)
luaL_error(L, "table expected, got %s", luaL_typename(L, 1));
+
d = dict_alloc();
if (d == NULL)
- lua_pushnil(L);
- else
{
- luaV_newdict(L, d);
- if (initarg) // traverse table to init dict
+ lua_pushnil(L);
+ return 1;
+ }
+
+ luaV_newdict(L, d);
+ if (!initarg)
+ return 1;
+
+ // traverse table to init dict
+ lua_pushnil(L);
+ while (lua_next(L, 1))
+ {
+ char_u *key;
+ dictitem_T *di;
+ typval_T v;
+
+ lua_pushvalue(L, -2); // dup key in case it's a number
+ key = (char_u *) lua_tostring(L, -1);
+ if (key == NULL)
{
lua_pushnil(L);
- while (lua_next(L, 1))
- {
- char_u *key;
- dictitem_T *di;
- typval_T v;
-
- lua_pushvalue(L, -2); // dup key in case it's a number
- key = (char_u *) lua_tostring(L, -1);
- if (key == NULL)
- {
- lua_pushnil(L);
- return 1;
- }
- if (*key == NUL)
- luaL_error(L, "table has empty key");
- luaV_checktypval(L, -2, &v, "vim.dict"); // value
- di = dictitem_alloc(key);
- if (di == NULL || dict_add(d, di) == FAIL)
- {
- vim_free(di);
- lua_pushnil(L);
- return 1;
- }
- di->di_tv = v;
- lua_pop(L, 2); // key copy and value
- }
+ return 1;
}
+ if (*key == NUL)
+ luaL_error(L, "table has empty key");
+ luaV_checktypval(L, -2, &v, "vim.dict"); // value
+ di = dictitem_alloc(key);
+ if (di == NULL || dict_add(d, di) == FAIL)
+ {
+ vim_free(di);
+ lua_pushnil(L);
+ return 1;
+ }
+ di->di_tv = v;
+ lua_pop(L, 2); // key copy and value
}
+
return 1;
}
@@ -2026,22 +2040,26 @@
if (initarg && !lua_isstring(L, 1))
luaL_error(L, "string expected, got %s", luaL_typename(L, 1));
+
b = blob_alloc();
if (b == NULL)
- lua_pushnil(L);
- else
{
- luaV_newblob(L, b);
- if (initarg)
- {
- size_t i, l = 0;
- const char *s = lua_tolstring(L, 1, &l);
-
- if (ga_grow(&b->bv_ga, (int)l) == OK)
- for (i = 0; i < l; ++i)
- ga_append(&b->bv_ga, s[i]);
- }
+ lua_pushnil(L);
+ return 1;
}
+
+ luaV_newblob(L, b);
+ if (!initarg)
+ return 1;
+
+ // traverse table to init blob
+ size_t i, l = 0;
+ const char *s = lua_tolstring(L, 1, &l);
+
+ if (ga_grow(&b->bv_ga, (int)l) == OK)
+ for (i = 0; i < l; ++i)
+ ga_append(&b->bv_ga, s[i]);
+
return 1;
}
@@ -2548,28 +2566,29 @@
static int
lua_init(void)
{
- if (!lua_isopen())
- {
+ if (lua_isopen())
+ return OK;
+
#ifdef DYNAMIC_LUA
- if (!lua_enabled(TRUE))
- {
- emsg(_("Lua library cannot be loaded."));
- return FAIL;
- }
-#endif
- L = luaV_newstate();
+ if (!lua_enabled(TRUE))
+ {
+ emsg(_("Lua library cannot be loaded."));
+ return FAIL;
}
+#endif
+ L = luaV_newstate();
+
return OK;
}
void
lua_end(void)
{
- if (lua_isopen())
- {
- lua_close(L);
- L = NULL;
- }
+ if (!lua_isopen())
+ return;
+
+ lua_close(L);
+ L = NULL;
}
/*
@@ -2698,31 +2717,32 @@
{
int aborted = 0;
- if (lua_isopen())
- {
- luaV_getfield(L, LUAVIM_SETREF);
- // call the function with 1 arg, getting 1 result back
- lua_pushinteger(L, copyID);
- lua_call(L, 1, 1);
- // get the result
- aborted = lua_tointeger(L, -1);
- // pop result off the stack
- lua_pop(L, 1);
- }
+ if (!lua_isopen())
+ return 0;
+
+ luaV_getfield(L, LUAVIM_SETREF);
+ // call the function with 1 arg, getting 1 result back
+ lua_pushinteger(L, copyID);
+ lua_call(L, 1, 1);
+ // get the result
+ aborted = lua_tointeger(L, -1);
+ // pop result off the stack
+ lua_pop(L, 1);
+
return aborted;
}
void
update_package_paths_in_lua()
{
- if (lua_isopen())
- {
- lua_getglobal(L, "vim");
- lua_getfield(L, -1, "_update_package_paths");
+ if (!lua_isopen())
+ return;
- if (lua_pcall(L, 0, 0, 0))
- luaV_emsg(L);
- }
+ lua_getglobal(L, "vim");
+ lua_getfield(L, -1, "_update_package_paths");
+
+ if (lua_pcall(L, 0, 0, 0))
+ luaV_emsg(L);
}
/*