Mercurial > vim
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