eval.c: Fix clint errors and typo in comment of ex_const()

This commit is contained in:
rhysd
2019-06-23 22:05:45 +09:00
parent 3d5a800278
commit 3e8bc4a13f

View File

@@ -777,10 +777,11 @@ var_redir_start(
did_emsg = FALSE; did_emsg = FALSE;
tv.v_type = VAR_STRING; tv.v_type = VAR_STRING;
tv.vval.v_string = (char_u *)""; tv.vval.v_string = (char_u *)"";
if (append) if (append) {
set_var_lval(redir_lval, redir_endp, &tv, TRUE, false, (char_u *)"."); set_var_lval(redir_lval, redir_endp, &tv, true, false, (char_u *)".");
else } else {
set_var_lval(redir_lval, redir_endp, &tv, TRUE, false, (char_u *)"="); set_var_lval(redir_lval, redir_endp, &tv, true, false, (char_u *)"=");
}
clear_lval(redir_lval); clear_lval(redir_lval);
err = did_emsg; err = did_emsg;
did_emsg |= save_emsg; did_emsg |= save_emsg;
@@ -1437,30 +1438,26 @@ int eval_foldexpr(char_u *arg, int *cp)
return (int)retval; return (int)retval;
} }
/* // ":cons[t] var = expr1" define constant
* :cons[t] var = expr1 define constant // ":cons[t] [name1, name2, ...] = expr1" define constants unpacking list
* :cons[t] [name1, name2, ...] = expr1 define constnats unpacking list // ":cons[t] [name, ..., ; lastname] = expr" define constants unpacking list
* :cons[t] [name, ..., ; lastname] = expr1 define constnats unpacking list
*/
void ex_const(exarg_T *eap) void ex_const(exarg_T *eap)
{ {
ex_let_const(eap, true); ex_let_const(eap, true);
} }
/* // ":let" list all variable values
* ":let" list all variable values // ":let var1 var2" list variable values
* ":let var1 var2" list variable values // ":let var = expr" assignment command.
* ":let var = expr" assignment command. // ":let var += expr" assignment command.
* ":let var += expr" assignment command. // ":let var -= expr" assignment command.
* ":let var -= expr" assignment command. // ":let var *= expr" assignment command.
* ":let var *= expr" assignment command. // ":let var /= expr" assignment command.
* ":let var /= expr" assignment command. // ":let var %= expr" assignment command.
* ":let var %= expr" assignment command. // ":let var .= expr" assignment command.
* ":let var .= expr" assignment command. // ":let var ..= expr" assignment command.
* ":let var ..= expr" assignment command. // ":let [var1, var2] = expr" unpack list.
* ":let [var1, var2] = expr" unpack list. // ":let [name, ..., ; lastname] = expr" unpack list.
* ":cons[t] [name, ..., ; lastname] = expr1" unpack list.
*/
void ex_let(exarg_T *eap) void ex_let(exarg_T *eap)
{ {
ex_let_const(eap, false); ex_let_const(eap, false);
@@ -1529,7 +1526,8 @@ static void ex_let_const(exarg_T *eap, const bool is_const)
} }
emsg_skip--; emsg_skip--;
} else if (i != FAIL) { } else if (i != FAIL) {
(void)ex_let_vars(eap->arg, &rettv, false, semicolon, var_count, is_const, op); (void)ex_let_vars(eap->arg, &rettv, false, semicolon, var_count,
is_const, op);
tv_clear(&rettv); tv_clear(&rettv);
} }
} }
@@ -1547,10 +1545,10 @@ static int
ex_let_vars( ex_let_vars(
char_u *arg_start, char_u *arg_start,
typval_T *tv, typval_T *tv,
int copy, /* copy values from "tv", don't move */ int copy, // copy values from "tv", don't move
int semicolon, /* from skip_var_list() */ int semicolon, // from skip_var_list()
int var_count, /* from skip_var_list() */ int var_count, // from skip_var_list()
int is_const, /* lock variables for :const */ int is_const, // lock variables for :const
char_u *nextchars char_u *nextchars
) )
{ {
@@ -1561,8 +1559,9 @@ ex_let_vars(
/* /*
* ":let var = expr" or ":for var in list" * ":let var = expr" or ":for var in list"
*/ */
if (ex_let_one(arg, tv, copy, is_const, nextchars, nextchars) == NULL) if (ex_let_one(arg, tv, copy, is_const, nextchars, nextchars) == NULL) {
return FAIL; return FAIL;
}
return OK; return OK;
} }
@@ -1590,8 +1589,8 @@ ex_let_vars(
size_t rest_len = tv_list_len(l); size_t rest_len = tv_list_len(l);
while (*arg != ']') { while (*arg != ']') {
arg = skipwhite(arg + 1); arg = skipwhite(arg + 1);
arg = ex_let_one(arg, TV_LIST_ITEM_TV(item), true, is_const, (const char_u *)",;]", arg = ex_let_one(arg, TV_LIST_ITEM_TV(item), true, is_const,
nextchars); (const char_u *)",;]", nextchars);
if (arg == NULL) { if (arg == NULL) {
return FAIL; return FAIL;
} }
@@ -1613,7 +1612,8 @@ ex_let_vars(
ltv.vval.v_list = rest_list; ltv.vval.v_list = rest_list;
tv_list_ref(rest_list); tv_list_ref(rest_list);
arg = ex_let_one(skipwhite(arg + 1), &ltv, false, is_const, (char_u *)"]", nextchars); arg = ex_let_one(skipwhite(arg + 1), &ltv, false, is_const,
(char_u *)"]", nextchars);
tv_clear(&ltv); tv_clear(&ltv);
if (arg == NULL) { if (arg == NULL) {
return FAIL; return FAIL;
@@ -1868,8 +1868,8 @@ static const char *list_arg_vars(exarg_T *eap, const char *arg, int *first)
/// @return a pointer to the char just after the var name or NULL in case of /// @return a pointer to the char just after the var name or NULL in case of
/// error. /// error.
static char_u *ex_let_one(char_u *arg, typval_T *const tv, static char_u *ex_let_one(char_u *arg, typval_T *const tv,
const bool copy, const bool is_const, const char_u *const endchars, const bool copy, const bool is_const,
const char_u *const op) const char_u *const endchars, const char_u *const op)
FUNC_ATTR_NONNULL_ARG(1, 2) FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ARG(1, 2) FUNC_ATTR_WARN_UNUSED_RESULT
{ {
char_u *arg_end = NULL; char_u *arg_end = NULL;
@@ -1881,8 +1881,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv,
* ":let $VAR = expr": Set environment variable. * ":let $VAR = expr": Set environment variable.
*/ */
if (*arg == '$') { if (*arg == '$') {
if (is_const) if (is_const) {
{
EMSG(_("E996: Cannot lock an environment variable")); EMSG(_("E996: Cannot lock an environment variable"));
return NULL; return NULL;
} }
@@ -1931,8 +1930,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv,
// ":let &l:option = expr": Set local option value. // ":let &l:option = expr": Set local option value.
// ":let &g:option = expr": Set global option value. // ":let &g:option = expr": Set global option value.
} else if (*arg == '&') { } else if (*arg == '&') {
if (is_const) if (is_const) {
{
EMSG(_("E996: Cannot lock an option")); EMSG(_("E996: Cannot lock an option"));
return NULL; return NULL;
} }
@@ -1986,8 +1984,7 @@ static char_u *ex_let_one(char_u *arg, typval_T *const tv,
} }
// ":let @r = expr": Set register contents. // ":let @r = expr": Set register contents.
} else if (*arg == '@') { } else if (*arg == '@') {
if (is_const) if (is_const) {
{
EMSG(_("E996: Cannot lock a register")); EMSG(_("E996: Cannot lock a register"));
return NULL; return NULL;
} }
@@ -2407,8 +2404,7 @@ static void set_var_lval(lval_T *lp, char_u *endp, typval_T *rettv,
if (op != NULL && *op != '=') { if (op != NULL && *op != '=') {
typval_T tv; typval_T tv;
if (is_const) if (is_const) {
{
EMSG(_(e_cannot_mod)); EMSG(_(e_cannot_mod));
*endp = cc; *endp = cc;
return; return;
@@ -2440,8 +2436,7 @@ static void set_var_lval(lval_T *lp, char_u *endp, typval_T *rettv,
listitem_T *ll_li = lp->ll_li; listitem_T *ll_li = lp->ll_li;
int ll_n1 = lp->ll_n1; int ll_n1 = lp->ll_n1;
if (is_const) if (is_const) {
{
EMSG(_("E996: Cannot lock a range")); EMSG(_("E996: Cannot lock a range"));
return; return;
} }
@@ -2501,8 +2496,7 @@ static void set_var_lval(lval_T *lp, char_u *endp, typval_T *rettv,
dict_T *dict = lp->ll_dict; dict_T *dict = lp->ll_dict;
bool watched = tv_dict_is_watched(dict); bool watched = tv_dict_is_watched(dict);
if (is_const) if (is_const) {
{
EMSG(_("E996: Cannot lock a list or dict")); EMSG(_("E996: Cannot lock a list or dict"));
return; return;
} }
@@ -20108,8 +20102,9 @@ static void set_var(const char *name, const size_t name_len, typval_T *const tv,
/// @param tv Variable value. /// @param tv Variable value.
/// @param[in] copy True if value in tv is to be copied. /// @param[in] copy True if value in tv is to be copied.
/// @param[in] is_const True if value in tv is to be locked. /// @param[in] is_const True if value in tv is to be locked.
static void set_var_const(const char *name, const size_t name_len, typval_T *const tv, static void set_var_const(const char *name, const size_t name_len,
const bool copy, const bool is_const) typval_T *const tv, const bool copy,
const bool is_const)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_ALL
{ {
dictitem_T *v; dictitem_T *v;
@@ -20137,8 +20132,7 @@ static void set_var_const(const char *name, const size_t name_len, typval_T *con
typval_T oldtv = TV_INITIAL_VALUE; typval_T oldtv = TV_INITIAL_VALUE;
if (v != NULL) { if (v != NULL) {
if (is_const) if (is_const) {
{
EMSG(_(e_cannot_mod)); EMSG(_(e_cannot_mod));
return; return;
} }