comparison src/evalfunc.c @ 17728:68ea27d26d5b v8.1.1861

patch 8.1.1861: only some assert functions can be used as a method commit https://github.com/vim/vim/commit/24278d2407dfbc8d93eb36593cdd006ff5d86f94 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Aug 16 21:49:22 2019 +0200 patch 8.1.1861: only some assert functions can be used as a method Problem: Only some assert functions can be used as a method. Solution: Allow using most assert functions as a method.
author Bram Moolenaar <Bram@vim.org>
date Fri, 16 Aug 2019 22:00:04 +0200
parents 73a93aae5f68
children 1726c2db81bf
comparison
equal deleted inserted replaced
17727:145b465ffd33 17728:68ea27d26d5b
413 } funcentry_T; 413 } funcentry_T;
414 414
415 // values for f_argtype; zero means it cannot be used as a method 415 // values for f_argtype; zero means it cannot be used as a method
416 #define FEARG_1 1 // base is the first argument 416 #define FEARG_1 1 // base is the first argument
417 #define FEARG_2 2 // base is the second argument 417 #define FEARG_2 2 // base is the second argument
418 #define FEARG_3 3 // base is the third argument
418 #define FEARG_LAST 9 // base is the last argument 419 #define FEARG_LAST 9 // base is the last argument
419 420
420 static funcentry_T global_functions[] = 421 static funcentry_T global_functions[] =
421 { 422 {
422 #ifdef FEAT_FLOAT 423 #ifdef FEAT_FLOAT
432 {"arglistid", 0, 2, 0, f_arglistid}, 433 {"arglistid", 0, 2, 0, f_arglistid},
433 {"argv", 0, 2, 0, f_argv}, 434 {"argv", 0, 2, 0, f_argv},
434 #ifdef FEAT_FLOAT 435 #ifdef FEAT_FLOAT
435 {"asin", 1, 1, 0, f_asin}, // WJMc 436 {"asin", 1, 1, 0, f_asin}, // WJMc
436 #endif 437 #endif
437 {"assert_beeps", 1, 2, 0, f_assert_beeps}, 438 {"assert_beeps", 1, 2, FEARG_1, f_assert_beeps},
438 {"assert_equal", 2, 3, FEARG_2, f_assert_equal}, 439 {"assert_equal", 2, 3, FEARG_2, f_assert_equal},
439 {"assert_equalfile", 2, 2, 0, f_assert_equalfile}, 440 {"assert_equalfile", 2, 2, 0, f_assert_equalfile},
440 {"assert_exception", 1, 2, 0, f_assert_exception}, 441 {"assert_exception", 1, 2, 0, f_assert_exception},
441 {"assert_fails", 1, 3, 0, f_assert_fails}, 442 {"assert_fails", 1, 3, FEARG_1, f_assert_fails},
442 {"assert_false", 1, 2, 0, f_assert_false}, 443 {"assert_false", 1, 2, FEARG_1, f_assert_false},
443 {"assert_inrange", 3, 4, 0, f_assert_inrange}, 444 {"assert_inrange", 3, 4, FEARG_3, f_assert_inrange},
444 {"assert_match", 2, 3, 0, f_assert_match}, 445 {"assert_match", 2, 3, FEARG_2, f_assert_match},
445 {"assert_notequal", 2, 3, FEARG_2, f_assert_notequal}, 446 {"assert_notequal", 2, 3, FEARG_2, f_assert_notequal},
446 {"assert_notmatch", 2, 3, 0, f_assert_notmatch}, 447 {"assert_notmatch", 2, 3, FEARG_2, f_assert_notmatch},
447 {"assert_report", 1, 1, 0, f_assert_report}, 448 {"assert_report", 1, 1, 0, f_assert_report},
448 {"assert_true", 1, 2, 0, f_assert_true}, 449 {"assert_true", 1, 2, FEARG_1, f_assert_true},
449 #ifdef FEAT_FLOAT 450 #ifdef FEAT_FLOAT
450 {"atan", 1, 1, 0, f_atan}, 451 {"atan", 1, 1, 0, f_atan},
451 {"atan2", 2, 2, 0, f_atan2}, 452 {"atan2", 2, 2, 0, f_atan2},
452 #endif 453 #endif
453 #ifdef FEAT_BEVAL 454 #ifdef FEAT_BEVAL
1132 argv[0] = argvars[0]; 1133 argv[0] = argvars[0];
1133 argv[1] = *basetv; 1134 argv[1] = *basetv;
1134 for (i = 1; i < argcount; ++i) 1135 for (i = 1; i < argcount; ++i)
1135 argv[i + 1] = argvars[i]; 1136 argv[i + 1] = argvars[i];
1136 } 1137 }
1138 else if (global_functions[fi].f_argtype == FEARG_3)
1139 {
1140 // base value goes third
1141 argv[0] = argvars[0];
1142 argv[1] = argvars[1];
1143 argv[2] = *basetv;
1144 for (i = 2; i < argcount; ++i)
1145 argv[i + 1] = argvars[i];
1146 }
1137 else 1147 else
1138 { 1148 {
1139 // FEARG_1: base value goes first 1149 // FEARG_1: base value goes first
1140 argv[0] = *basetv; 1150 argv[0] = *basetv;
1141 for (i = 0; i < argcount; ++i) 1151 for (i = 0; i < argcount; ++i)