diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-08-24 16:48:05 -0400 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2019-08-24 17:02:05 -0400 |
commit | 1dc088ea7dff8921d5580078f31a3a660ee16dc0 (patch) | |
tree | 9b7d45b5757c28db187d38e08da88ee79440eb2f /src | |
parent | 01b5499eea24961f0163b0ca3728c649aad53bbf (diff) | |
download | rneovim-1dc088ea7dff8921d5580078f31a3a660ee16dc0.tar.gz rneovim-1dc088ea7dff8921d5580078f31a3a660ee16dc0.tar.bz2 rneovim-1dc088ea7dff8921d5580078f31a3a660ee16dc0.zip |
vim-patch:8.1.1111: it is not easy to check for infinity
Problem: It is not easy to check for infinity.
Solution: Add isinf(). (Ozaki Kiichi, closes vim/vim#3787)
https://github.com/vim/vim/commit/fda1bff39f89775b20a2d88ef3903656d52f66ad
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 10 | ||||
-rw-r--r-- | src/nvim/eval.lua | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test_float_func.vim | 23 |
3 files changed, 27 insertions, 7 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 94dcbe0dcf..7b620a03e6 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -11276,7 +11276,6 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr) #endif "tablineat", "tag_binary", - "tag_old_static", "termguicolors", "termresponse", "textobjects", @@ -12029,6 +12028,15 @@ static void f_islocked(typval_T *argvars, typval_T *rettv, FunPtr fptr) clear_lval(&lv); } +// "isinf()" function +static void f_isinf(typval_T *argvars, typval_T *rettv, FunPtr fptr) +{ + if (argvars[0].v_type == VAR_FLOAT + && xisinf(argvars[0].vval.v_float)) { + rettv->vval.v_number = argvars[0].vval.v_float > 0.0 ? 1 : -1; + } +} + // "isnan()" function static void f_isnan(typval_T *argvars, typval_T *rettv, FunPtr fptr) { diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index bc3e612b0a..a21e5a6f5d 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -189,6 +189,7 @@ return { insert={args={2, 3}}, invert={args=1}, isdirectory={args=1}, + isinf={args=1}, islocked={args=1}, isnan={args=1}, id={args=1}, diff --git a/src/nvim/testdir/test_float_func.vim b/src/nvim/testdir/test_float_func.vim index a44c5a9e98..154ef570e0 100644 --- a/src/nvim/testdir/test_float_func.vim +++ b/src/nvim/testdir/test_float_func.vim @@ -288,13 +288,24 @@ func Test_trunc() call assert_fails("call trunc('')", 'E808:') endfunc +func Test_isinf() + call assert_equal(1, isinf(1.0/0.0)) + call assert_equal(-1, isinf(-1.0/0.0)) + call assert_false(isinf(1.0)) + call assert_false(isinf(0.0/0.0)) + call assert_false(isinf('a')) + call assert_false(isinf([])) + call assert_false(isinf({})) +endfunc + func Test_isnan() - call assert_equal(0, isnan(1.0)) - call assert_equal(1, isnan(0.0/0.0)) - call assert_equal(0, isnan(1.0/0.0)) - call assert_equal(0, isnan('a')) - call assert_equal(0, isnan([])) - call assert_equal(0, isnan({})) + call assert_true(isnan(0.0/0.0)) + call assert_false(isnan(1.0)) + call assert_false(isnan(1.0/0.0)) + call assert_false(isnan(-1.0/0.0)) + call assert_false(isnan('a')) + call assert_false(isnan([])) + call assert_false(isnan({})) endfunc " This was converted from test65 |