Mercurial > vim
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) |