summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2024-05-09 09:12:31 +0200
committerChristian Brabandt <cb@256bit.org>2024-05-09 09:15:02 +0200
commit1b53172901ebe5be3ddf1baee22d964c8d41e899 (patch)
treecd90f3a7de35dc976b5870aa24b7cf4f53ddb450
parentd5c8c0920e1eee9ff7a9fa5168d8e85c01670630 (diff)
patch 9.1.0400: Vim9: confusing error message for unknown typev9.1.0400
Problem: Vim9: confusing error message for unknown type (Doug Kearns) Solution: For an unknown type, display only the type name in the error message (Yegappan Lakshmanan) fixes: #13153 closes: #14736 Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--src/testdir/test_vim9_script.vim17
-rw-r--r--src/testdir/test_vim9_typealias.vim2
-rw-r--r--src/version.c2
-rw-r--r--src/vim9type.c7
4 files changed, 26 insertions, 2 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 3ac106eaaf..2c3c47f0a9 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -5002,7 +5002,7 @@ def Test_invalid_type_in_for()
enddef
defcompile
END
- v9.CheckSourceFailure(lines, 'E1010: Type not recognized: x in range(10)', 1)
+ v9.CheckSourceFailure(lines, 'E1010: Type not recognized: x', 1)
enddef
" Test for using a line break between the variable name and the type in a for
@@ -5083,6 +5083,21 @@ def Test_null_values()
v9.CheckSourceDefAndScriptSuccess(lines)
enddef
+" Test for using an unknown type in a typecast
+def Test_unknown_type_in_typecast()
+ var lines =<< trim END
+ vim9script
+ var a = <MyType>b
+ END
+ v9.CheckSourceFailure(lines, 'E1010: Type not recognized: MyType', 2)
+
+ lines =<< trim END
+ vim9script
+ var Fn = <funcx(number, number): number>b
+ END
+ v9.CheckSourceFailure(lines, 'E1010: Type not recognized: funcx(number, number): number', 2)
+enddef
+
" Keep this last, it messes up highlighting.
def Test_substitute_cmd()
new
diff --git a/src/testdir/test_vim9_typealias.vim b/src/testdir/test_vim9_typealias.vim
index cf540c2306..2792d45dc9 100644
--- a/src/testdir/test_vim9_typealias.vim
+++ b/src/testdir/test_vim9_typealias.vim
@@ -363,7 +363,7 @@ def Test_typealias_import()
var myNum: A.SomeType = 10
END
- v9.CheckScriptFailure(lines, 'E1010: Type not recognized: A.SomeType = 10', 4)
+ v9.CheckScriptFailure(lines, 'E1010: Type not recognized: A.SomeType', 4)
# Use a type alias that is not exported
lines =<< trim END
diff --git a/src/version.c b/src/version.c
index 06f0c62760..db95d7b568 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 */
/**/
+ 400,
+/**/
399,
/**/
398,
diff --git a/src/vim9type.c b/src/vim9type.c
index 517dee2805..ffdf7facb9 100644
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -1466,7 +1466,14 @@ parse_type_user_defined(
}
if (give_error && (did_emsg == did_emsg_before))
+ {
+ char_u *p = skip_type(*arg, FALSE);
+ char cc = *p;
+
+ *p = NUL;
semsg(_(e_type_not_recognized_str), *arg);
+ *p = cc;
+ }
return NULL;
}