diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 00b843206e..f1acdf38ef 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -838,6 +838,23 @@ def Test_class_member() END v9.CheckScriptSuccess(lines) + # using static class member twice + lines =<< trim END + vim9script + + class HTML + static author: string = 'John Doe' + + static def MacroSubstitute(s: string): string + return substitute(s, '{{author}}', author, 'gi') + enddef + endclass + + assert_equal('some text', HTML.MacroSubstitute('some text')) + assert_equal('some text', HTML.MacroSubstitute('some text')) + END + v9.CheckScriptSuccess(lines) + # access private member in lambda lines =<< trim END vim9script diff --git a/src/version.c b/src/version.c index 437da6577e..8840b3acc6 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1662, /**/ 1661, /**/ diff --git a/src/vim9execute.c b/src/vim9execute.c index 921e2ca053..eb663a1096 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -3967,8 +3967,8 @@ exec_instructions(ectx_T *ectx) if (GA_GROW_FAILS(&ectx->ec_stack, 1)) goto theend; classmember_T *cm = &iptr->isn_arg.classmember; - *STACK_TV_BOT(0) = - cm->cm_class->class_members_tv[cm->cm_idx]; + copy_tv(cm->cm_class->class_members_tv + cm->cm_idx, + STACK_TV_BOT(0)); ++ectx->ec_stack.ga_len; } break;