summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/builtin.txt1
-rw-r--r--runtime/doc/eval.txt2
-rw-r--r--runtime/doc/tags14
-rw-r--r--runtime/doc/vim9class.txt36
-rw-r--r--src/version.c2
-rw-r--r--src/vim.h2
6 files changed, 49 insertions, 8 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index c9b9938dd9..657fe8dbd6 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -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("")
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 5d61035f55..2a4bd4c7d5 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -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|
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 9c641f52d3..fdda06b7e1 100644
--- 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*
diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt
index f7ce914628..c0fc7cb037 100644
--- 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>
+ 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*
diff --git a/src/version.c b/src/version.c
index a6a54f2270..6813d54110 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 */
/**/
+ 2162,
+/**/
2161,
/**/
2160,
diff --git a/src/vim.h b/src/vim.h
index 2d5ae99cb4..3aa04f5548 100644
--- 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