Mercurial > vim
comparison src/testdir/test_vim9_class.vim @ 33075:0346ff4c3ee7 v9.0.1824
patch 9.0.1824: Vim9: private members may be modifiable
Commit: https://github.com/vim/vim/commit/5bbcfbc4a260bc082829311086c3a1109c40f2d3
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Wed Aug 30 16:38:26 2023 +0200
patch 9.0.1824: Vim9: private members may be modifiable
Problem: Vim9: private members may be modifiable
Solution: prevent modification for def function
closes: #12963
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 30 Aug 2023 16:45:10 +0200 |
parents | 8362975375a4 |
children | 667a17904f64 |
comparison
equal
deleted
inserted
replaced
33074:5510af40c77b | 33075:0346ff4c3ee7 |
---|---|
3651 endclass | 3651 endclass |
3652 END | 3652 END |
3653 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val') | 3653 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val') |
3654 enddef | 3654 enddef |
3655 | 3655 |
3656 " Test for accessing a private member outside a class in a def function | |
3657 def Test_private_member_access_outside_class() | |
3658 # private object member variable | |
3659 var lines =<< trim END | |
3660 vim9script | |
3661 class A | |
3662 this._val = 10 | |
3663 def GetVal(): number | |
3664 return this._val | |
3665 enddef | |
3666 endclass | |
3667 def T() | |
3668 var a = A.new() | |
3669 a._val = 20 | |
3670 enddef | |
3671 T() | |
3672 END | |
3673 v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val') | |
3674 | |
3675 # private class member variable | |
3676 lines =<< trim END | |
3677 vim9script | |
3678 class A | |
3679 static _val: number = 10 | |
3680 endclass | |
3681 def T() | |
3682 A._val = 20 | |
3683 enddef | |
3684 T() | |
3685 END | |
3686 v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val') | |
3687 enddef | |
3688 | |
3656 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker | 3689 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker |