mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.0.0623: error for invalid regexp is not very informative
Problem: The message "Invalid range" is used for multiple errors. Solution: Add two more specific error messages. (Itchyny, Ken Hamada)
This commit is contained in:
parent
c5e2b040b4
commit
966e58e413
@ -358,6 +358,8 @@ static char_u *regprop(char_u *);
|
|||||||
static int re_mult_next(char *what);
|
static int re_mult_next(char *what);
|
||||||
|
|
||||||
static char_u e_missingbracket[] = N_("E769: Missing ] after %s[");
|
static char_u e_missingbracket[] = N_("E769: Missing ] after %s[");
|
||||||
|
static char_u e_reverse_range[] = N_("E944: Reverse range in character class");
|
||||||
|
static char_u e_large_class[] = N_("E945: Range too large in character class");
|
||||||
static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
|
static char_u e_unmatchedpp[] = N_("E53: Unmatched %s%%(");
|
||||||
static char_u e_unmatchedp[] = N_("E54: Unmatched %s(");
|
static char_u e_unmatchedp[] = N_("E54: Unmatched %s(");
|
||||||
static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
|
static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
|
||||||
@ -2426,14 +2428,14 @@ collection:
|
|||||||
endc = coll_get_char();
|
endc = coll_get_char();
|
||||||
|
|
||||||
if (startc > endc)
|
if (startc > endc)
|
||||||
EMSG_RET_NULL(_(e_invrange));
|
EMSG_RET_NULL(_(e_reverse_range));
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
if (has_mbyte && ((*mb_char2len)(startc) > 1
|
if (has_mbyte && ((*mb_char2len)(startc) > 1
|
||||||
|| (*mb_char2len)(endc) > 1))
|
|| (*mb_char2len)(endc) > 1))
|
||||||
{
|
{
|
||||||
/* Limit to a range of 256 chars */
|
/* Limit to a range of 256 chars. */
|
||||||
if (endc > startc + 256)
|
if (endc > startc + 256)
|
||||||
EMSG_RET_NULL(_(e_invrange));
|
EMSG_RET_NULL(_(e_large_class));
|
||||||
while (++startc <= endc)
|
while (++startc <= endc)
|
||||||
regmbc(startc);
|
regmbc(startc);
|
||||||
}
|
}
|
||||||
|
@ -1853,7 +1853,7 @@ collection:
|
|||||||
endc = startc;
|
endc = startc;
|
||||||
startc = oldstartc;
|
startc = oldstartc;
|
||||||
if (startc > endc)
|
if (startc > endc)
|
||||||
EMSG_RET_FAIL(_(e_invrange));
|
EMSG_RET_FAIL(_(e_reverse_range));
|
||||||
|
|
||||||
if (endc > startc + 2)
|
if (endc > startc + 2)
|
||||||
{
|
{
|
||||||
|
@ -137,3 +137,20 @@ func Test_classes_re2()
|
|||||||
call s:classes_test()
|
call s:classes_test()
|
||||||
set re=0
|
set re=0
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_reversed_range()
|
||||||
|
for re in range(0, 2)
|
||||||
|
exe 'set re=' . re
|
||||||
|
call assert_fails('call match("abc def", "[c-a]")', 'E944:')
|
||||||
|
endfor
|
||||||
|
set re=0
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_large_class()
|
||||||
|
set re=1
|
||||||
|
call assert_fails('call match("abc def", "[\u3000-\u4000]")', 'E945:')
|
||||||
|
set re=2
|
||||||
|
call assert_equal(0, 'abc def' =~# '[\u3000-\u4000]')
|
||||||
|
call assert_equal(1, "\u3042" =~# '[\u3000-\u4000]')
|
||||||
|
set re=0
|
||||||
|
endfunc
|
||||||
|
@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
623,
|
||||||
/**/
|
/**/
|
||||||
622,
|
622,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user