patch 9.1.0148: Vim9: can't call internal methods with objects
Problem: Vim9: can't call internal methods with objects
Solution: Add support for empty(), len() and string() function
calls for objects (Yegappan Lakshmanan)
closes: #14129
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index dbad880..0d47e36 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 Mar 01
+*builtin.txt* For Vim version 9.1. Last change: 2024 Mar 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2265,6 +2265,8 @@
- A |Job| is empty when it failed to start.
- A |Channel| is empty when it is closed.
- A |Blob| is empty when its length is zero.
+ - An |Object| is empty, when the |empty()| builtin method in
+ the object (if present) returns true.
For a long |List| this is much faster than comparing the
length with zero.
@@ -5476,7 +5478,9 @@
When {expr} is a |Blob| the number of bytes is returned.
When {expr} is a |Dictionary| the number of entries in the
|Dictionary| is returned.
- Otherwise an error is given and returns zero.
+ When {expr} is an |Object|, invokes the |len()| method in the
+ object (if present) to get the length. Otherwise returns
+ zero.
Can also be used as a |method|: >
mylist->len()
@@ -9587,6 +9591,10 @@
replaced by "[...]" or "{...}". Using eval() on the result
will then fail.
+ For an object, invokes the |string()| method to get a textual
+ representation of the object. If the method is not present,
+ then the default representation is used.
+
Can also be used as a |method|: >
mylist->string()