changeset 33931:050160b94f02 v9.0.2162

patch 9.0.2162: Vim9: type documentation out-dated Commit: https://github.com/vim/vim/commit/2a71b54d35361f3f0c24db88c672b426f8acc7b7 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Thu Dec 14 20:03:03 2023 +0100 patch 9.0.2162: Vim9: type documentation out-dated 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>
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Dec 2023 20:15:06 +0100
parents 09139cc5ebcd
children 4d9213d8ba23
files runtime/doc/builtin.txt runtime/doc/eval.txt runtime/doc/tags runtime/doc/vim9class.txt src/version.c src/vim.h
diffstat 6 files changed, 49 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -10181,6 +10181,7 @@ type({expr})	The result is a Number repr
 			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("")
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2558,6 +2558,8 @@ v:t_blob	Value of |Blob| type.  Read-onl
 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|
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -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>
+    type ListOfStrings = list<string>
+    var s: ListOfStrings = ['a', 'b']
 
-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.
+    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.
+
+					*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.
+
+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*
--- 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 */
 /**/
+    2162,
+/**/
     2161,
 /**/
     2160,
--- 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