aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-08-24 16:48:05 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-08-24 17:02:05 -0400
commit1dc088ea7dff8921d5580078f31a3a660ee16dc0 (patch)
tree9b7d45b5757c28db187d38e08da88ee79440eb2f /src
parent01b5499eea24961f0163b0ca3728c649aad53bbf (diff)
downloadrneovim-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.c10
-rw-r--r--src/nvim/eval.lua1
-rw-r--r--src/nvim/testdir/test_float_func.vim23
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