summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2024-02-25 08:40:10 +0100
committerChristian Brabandt <cb@256bit.org>2024-02-25 08:40:10 +0100
commita2ebb6e9176d007c11804bb9784beee35a8050c8 (patch)
treedf9b8d699618e412ad674dc10802a2f0672c6012
parent374e26aba2e5e0a220b1a7ce1934b0eb5f493e6c (diff)
patch 9.1.0136: Vim9: need more test for exists()v9.1.0136
methods Problem: Vim9: need more test for exists() Solution: Add test for exists() with class/objct variables and methods (Yegappan Lakshmanan) closes: #14088 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--runtime/doc/builtin.txt12
-rw-r--r--src/testdir/test_exists.vim49
-rw-r--r--src/version.c2
3 files changed, 57 insertions, 6 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 849b1808f1..0af9b0e0f7 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -1,4 +1,4 @@
-*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 24
+*builtin.txt* For Vim version 9.1. Last change: 2024 Feb 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2405,11 +2405,11 @@ exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined,
varname internal variable (see
dict.key |internal-variables|). Also works
list[i] for |curly-braces-names|, |Dictionary|
- import.Func entries, |List| items, imported
- items, etc.
- Does not work for local variables in a
- compiled `:def` function.
- Also works for a function in |Vim9|
+ import.Func entries, |List| items, class and
+ class.Func object methods, imported items, etc.
+ object.Func Does not work for local variables in a
+ class.varname compiled `:def` function.
+ object.varname Also works for a function in |Vim9|
script, since it can be used as a
function reference.
Beware that evaluating an index may
diff --git a/src/testdir/test_exists.vim b/src/testdir/test_exists.vim
index a735a7d19b..9cdb3fb5c0 100644
--- a/src/testdir/test_exists.vim
+++ b/src/testdir/test_exists.vim
@@ -1,5 +1,7 @@
" Tests for the exists() function
+import './vim9.vim' as v9
+
func Test_exists()
augroup myagroup
autocmd! BufEnter *.my echo "myfile edited"
@@ -334,4 +336,51 @@ func Test_exists_funcarg()
call FuncArg_Tests("arg1", "arg2")
endfunc
+" Test for using exists() with class and object variables and methods.
+func Test_exists_class_object()
+ let lines =<< trim END
+ vim9script
+ class A
+ var var1: number = 10
+ static var var2: number = 10
+ static def Foo()
+ enddef
+ def Bar()
+ enddef
+ endclass
+
+ assert_equal(1, exists("A"))
+ var a = A.new()
+ assert_equal(1, exists("a"))
+
+ assert_equal(1, exists("a.var1"))
+ assert_fails('exists("a.var2")', 'E1375: Class variable "var2" accessible only using class "A"')
+ assert_fails('exists("a.var3")', 'E1326: Variable "var3" not found in object "A"')
+ assert_equal(1, exists("A.var2"))
+ assert_fails('exists("A.var1")', 'E1376: Object variable "var1" accessible only using class "A" object')
+ assert_fails('exists("A.var3")', 'E1337: Class variable "var3" not found in class "A"')
+
+ assert_equal(1, exists("a.Bar"))
+ assert_fails('exists("a.Barz")', 'E1326: Variable "Barz" not found in object "A"')
+ assert_fails('exists("a.Foo")', 'E1326: Variable "Foo" not found in object "A"')
+ assert_equal(1, exists("A.Foo"))
+ assert_fails('exists("A.Bar")', 'E1337: Class variable "Bar" not found in class "A"')
+ assert_fails('exists("A.Barz")', 'E1337: Class variable "Barz" not found in class "A"')
+
+ def Baz()
+ assert_equal(1, exists("A"))
+ var aa = A.new()
+ assert_equal(1, exists("A.var2"))
+ assert_fails('exists("A.var1")', 'E1376: Object variable "var1" accessible only using class "A" object')
+ assert_fails('exists("A.var3")', 'E1337: Class variable "var3" not found in class "A"')
+
+ assert_equal(1, exists("A.Foo"))
+ assert_fails('exists("A.Bar")', 'E1337: Class variable "Bar" not found in class "A"')
+ assert_fails('exists("A.Barz")', 'E1337: Class variable "Barz" not found in class "A"')
+ enddef
+ Baz()
+ END
+ call v9.CheckSourceSuccess(lines)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 7ecfc94445..6d6a5a19a8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 136,
+/**/
135,
/**/
134,