changeset 31708:f6309f6742e5 v9.0.1186

patch 9.0.1186: imported class does not work when used twice in a line Commit: https://github.com/vim/vim/commit/4059400993ff380414dce9b577eff0f8c86b7725 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 12 20:04:51 2023 +0000 patch 9.0.1186: imported class does not work when used twice in a line Problem: Imported class does not work when used twice in a line. Solution: Fix the type parsing.
author Bram Moolenaar <Bram@vim.org>
date Thu, 12 Jan 2023 21:15:03 +0100
parents 5c243262fc48
children 93f30cb659bc
files src/evalvars.c src/testdir/test_vim9_class.vim src/version.c
diffstat 3 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -3122,8 +3122,12 @@ eval_variable_import(
 	return FAIL;
     if (rettv->v_type == VAR_ANY && *s == '.')
     {
+	char_u *ns = s + 1;
+	s = ns;
+	while (ASCII_ISALNUM(*s) || *s == '_')
+	    ++s;
 	int sid = rettv->vval.v_number;
-	return eval_variable(s + 1, 0, sid, rettv, NULL, 0);
+	return eval_variable(ns, (int)(s - ns), sid, rettv, NULL, 0);
     }
     return OK;
 }
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -992,6 +992,10 @@ def Test_class_import()
       a = animal.Animal.new('fish', 'Eric')
       assert_equal('fish', a.kind)
       assert_equal('Eric', a.name)
+
+      var b: animal.Animal = animal.Animal.new('cat', 'Garfield')
+      assert_equal('cat', b.kind)
+      assert_equal('Garfield', b.name)
   END
   v9.CheckScriptSuccess(lines)
 enddef
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1186,
+/**/
     1185,
 /**/
     1184,