]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.2162: Vim9: type documentation out-dated v9.0.2162
authorYegappan Lakshmanan <yegappan@yahoo.com>
Thu, 14 Dec 2023 19:03:03 +0000 (20:03 +0100)
committerChristian Brabandt <cb@256bit.org>
Thu, 14 Dec 2023 19:03:03 +0000 (20:03 +0100)
Problem:  Vim9: type documentation out-dated
Solution: Update documentation, fix typo in type alias
          definition

closes: #13684

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/builtin.txt
runtime/doc/eval.txt
runtime/doc/tags
runtime/doc/vim9class.txt
src/version.c
src/vim.h

index c9b9938dd93b610ae6c6d3c3dae462761746c56c..657fe8dbd6395d62012d8e73106eedbb43a976ad 100644 (file)
@@ -10181,6 +10181,7 @@ type({expr})    The result is a Number representing the type of {expr}.
                        Blob:      10  |v:t_blob|
                        Class:     12  |v:t_class|
                        Object:    13  |v:t_object|
+                       Typealias: 14  |v:t_typealias|
                For backward compatibility, this method can be used: >
                        :if type(myvar) == type(0)
                        :if type(myvar) == type("")
index 5d61035f55f2355bf310460f6f888bc79cbe6d28..2a4bd4c7d53cbffc2d802189aea2a1abad7d70a2 100644 (file)
@@ -2558,6 +2558,8 @@ v:t_blob  Value of |Blob| type.  Read-only.  See: |type()|
 v:t_class      Value of |class| type.  Read-only.  See: |type()|
                                        *v:t_object* *t_object-variable*
 v:t_object     Value of |object| type.  Read-only.  See: |type()|
+                                       *v:t_typealias* *t_typealias-variable*
+v:t_typealias  Value of |typealias| type.  Read-only.  See: |type()|
 
                                *v:termresponse* *termresponse-variable*
 v:termresponse The escape sequence returned by the terminal for the |t_RV|
index 9c641f52d36b48a5d5bb84c3ab8ba02f0b5e879a..fdda06b7e1ea42416fca62ecbbdca9f217f2e1d6 100644 (file)
@@ -4491,7 +4491,19 @@ E139     message.txt     /*E139*
 E1390  vim9class.txt   /*E1390*
 E1391  eval.txt        /*E1391*
 E1392  eval.txt        /*E1392*
+E1393  vim9class.txt   /*E1393*
+E1394  vim9class.txt   /*E1394*
+E1395  vim9class.txt   /*E1395*
+E1396  vim9class.txt   /*E1396*
+E1397  vim9class.txt   /*E1397*
+E1398  vim9class.txt   /*E1398*
+E1399  vim9class.txt   /*E1399*
 E140   message.txt     /*E140*
+E1400  vim9class.txt   /*E1400*
+E1401  vim9class.txt   /*E1401*
+E1402  vim9class.txt   /*E1402*
+E1403  vim9class.txt   /*E1403*
+E1407  vim9class.txt   /*E1407*
 E141   message.txt     /*E141*
 E142   message.txt     /*E142*
 E143   autocmd.txt     /*E143*
@@ -10285,6 +10297,7 @@ t_ti    term.txt        /*t_ti*
 t_tp   version4.txt    /*t_tp*
 t_ts   term.txt        /*t_ts*
 t_ts_old       version4.txt    /*t_ts_old*
+t_typealias-variable   eval.txt        /*t_typealias-variable*
 t_u7   term.txt        /*t_u7*
 t_ue   term.txt        /*t_ue*
 t_undo version4.txt    /*t_undo*
@@ -10785,6 +10798,7 @@ v:t_none        eval.txt        /*v:t_none*
 v:t_number     eval.txt        /*v:t_number*
 v:t_object     eval.txt        /*v:t_object*
 v:t_string     eval.txt        /*v:t_string*
+v:t_typealias  eval.txt        /*v:t_typealias*
 v:termblinkresp        eval.txt        /*v:termblinkresp*
 v:termrbgresp  eval.txt        /*v:termrbgresp*
 v:termresponse eval.txt        /*v:termresponse*
index f7ce914628a647d2672455e06b65d1b423a9e70b..c0fc7cb0372a3ac1d75fafbc7d35e193a426e7ec 100644 (file)
@@ -752,16 +752,38 @@ constructor methods.
 
 7.  Type definition                                    *Vim9-type* *:type*
 
-A type definition is giving a name to a type specification.  This also known
-type alias.  For Example: >
+                                       *E1393* *E1395* *E1396* *E1397* *E1398*
+A type definition is giving a name to a type specification.  This is also
+known as a "type alias".  The type alias can be used wherever a built-in type
+can be used.  Example: >
+
+    type ListOfStrings = list<string>
+    var s: ListOfStrings = ['a', 'b']
+
+    def ProcessStr(str: ListOfStrings): ListOfStrings
+       return str
+    enddef
+    echo ProcessStr(s)
+<
+                                                       *E1394*
+A type alias name must start with an upper case character.  Only existing
+types can be aliased.
+
+                                                       *E1399*
+A type alias can be created only at the script level and not inside a
+function.  A type alias can be exported and used across scripts.
 
-       :type ListOfStrings = list<string>
+                                       *E1400* *E1401* *E1402* *E1403* *E1407*
+A type alias cannot be used as an expression.  A type alias cannot be used in
+the left-hand-side of an assignment.
 
-The type alias can be used wherever a built-in type can be used.  The type
-alias name must start with an upper case character.  A type alias can be
-created only at the script level and not inside a function.  A type alias can
-be exported and used across scripts.
+For a type alias name, the |typename()| function returns the type that is
+aliased: >
 
+    type ListOfStudents = list<dict<any>>
+    echo typename(ListOfStudents)
+    typealias<list<dict<any>>>
+<
 ==============================================================================
 
 8.  Enum                                       *Vim9-enum* *:enum* *:endenum*
index a6a54f227083d52a1e91dcc0bad0edc7df83fcff..6813d541104deb8b31c30b9610b318e4c0babf67 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2162,
 /**/
     2161,
 /**/
index 2d5ae99cb46d648a8c15c367ef06ac2c6f807ee9..3aa04f5548f0d8f8b963a43cec95898b7199368a 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -2181,7 +2181,7 @@ typedef int sock_T;
 #define VAR_TYPE_INSTR     11
 #define VAR_TYPE_CLASS     12
 #define VAR_TYPE_OBJECT            13
-#define VAR_TYPE_TYPEALIAS  15
+#define VAR_TYPE_TYPEALIAS  14
 
 #define DICT_MAXNEST 100       // maximum nesting of lists and dicts