vim-patch:7.4.1606

Problem:    Having type() handle a Funcref that is or isn't a partial
            differently causes problems for existing scripts.
Solution:   Make type() return the same value. (Thinca)

953cc7fb13
This commit is contained in:
Michael Ennen 2016-10-27 13:53:53 -07:00 committed by James McCoy
parent 34a7814219
commit 5241ca7d7a
3 changed files with 3 additions and 2 deletions

View File

@ -17107,6 +17107,7 @@ static void f_type(typval_T *argvars, typval_T *rettv, FunPtr fptr)
switch (argvars[0].v_type) { switch (argvars[0].v_type) {
case VAR_NUMBER: n = VAR_TYPE_NUMBER; break; case VAR_NUMBER: n = VAR_TYPE_NUMBER; break;
case VAR_STRING: n = VAR_TYPE_STRING; break; case VAR_STRING: n = VAR_TYPE_STRING; break;
case VAR_PARTIAL:
case VAR_FUNC: n = VAR_TYPE_FUNC; break; case VAR_FUNC: n = VAR_TYPE_FUNC; break;
case VAR_LIST: n = VAR_TYPE_LIST; break; case VAR_LIST: n = VAR_TYPE_LIST; break;
case VAR_DICT: n = VAR_TYPE_DICT; break; case VAR_DICT: n = VAR_TYPE_DICT; break;
@ -17125,7 +17126,6 @@ static void f_type(typval_T *argvars, typval_T *rettv, FunPtr fptr)
} }
break; break;
} }
case VAR_PARTIAL: n = 8; break;
case VAR_UNKNOWN: { case VAR_UNKNOWN: {
EMSG2(_(e_intern2), "f_type(UNKNOWN)"); EMSG2(_(e_intern2), "f_type(UNKNOWN)");
break; break;

View File

@ -943,6 +943,7 @@ func Test_type()
call assert_equal(0, type(0)) call assert_equal(0, type(0))
call assert_equal(1, type("")) call assert_equal(1, type(""))
call assert_equal(2, type(function("tr"))) call assert_equal(2, type(function("tr")))
call assert_equal(2, type(function("tr", [8])))
call assert_equal(3, type([])) call assert_equal(3, type([]))
call assert_equal(4, type({})) call assert_equal(4, type({}))
call assert_equal(5, type(0.0)) call assert_equal(5, type(0.0))

View File

@ -836,7 +836,7 @@ static int included_patches[] = {
// 1609 NA // 1609 NA
// 1608, // 1608,
// 1607, // 1607,
// 1606, 1606,
1605, 1605,
1604, 1604,
1603, 1603,