comparison src/testdir/test_vim9_class.vim @ 33047:9ef43d02dd8f v9.0.1814

patch 9.0.1814: Vim9 no error on duplicate object member var Commit: https://github.com/vim/vim/commit/2ba9d2e14e3633c92a32abba2a12533f93fefbf5 Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Mon Aug 28 21:26:23 2023 +0200 patch 9.0.1814: Vim9 no error on duplicate object member var Problem: Vim9 no error on duplicate object member var Solution: detect duplicate members and error out closes: #12938 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author Christian Brabandt <cb@256bit.org>
date Mon, 28 Aug 2023 21:30:10 +0200
parents 669898c9a6c3
children d42927c6e556
comparison
equal deleted inserted replaced
33046:29b9f832b7d3 33047:9ef43d02dd8f
892 class Something 892 class Something
893 stat this.val = 1 893 stat this.val = 1
894 endclass 894 endclass
895 END 895 END
896 v9.CheckScriptFailure(lines, 'E1065:') 896 v9.CheckScriptFailure(lines, 'E1065:')
897
898 # Test for "static" cannot be followed by "this".
899 lines =<< trim END
900 vim9script
901 class Something
902 static this.val = 1
903 endclass
904 END
905 v9.CheckScriptFailure(lines, 'E1368: Static cannot be followed by "this" in a member name')
897 enddef 906 enddef
898 907
899 def Test_class_object_compare() 908 def Test_class_object_compare()
900 var class_lines =<< trim END 909 var class_lines =<< trim END
901 vim9script 910 vim9script
3436 Baz() 3445 Baz()
3437 END 3446 END
3438 v9.CheckScriptSuccess(lines) 3447 v9.CheckScriptSuccess(lines)
3439 enddef 3448 enddef
3440 3449
3450 " Test for declaring duplicate object and class members
3451 def Test_dup_member_variable()
3452 # Duplicate member variable
3453 var lines =<< trim END
3454 vim9script
3455 class C
3456 this.val = 10
3457 this.val = 20
3458 endclass
3459 END
3460 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
3461
3462 # Duplicate private member variable
3463 lines =<< trim END
3464 vim9script
3465 class C
3466 this._val = 10
3467 this._val = 20
3468 endclass
3469 END
3470 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
3471
3472 # Duplicate public member variable
3473 lines =<< trim END
3474 vim9script
3475 class C
3476 public this.val = 10
3477 public this.val = 20
3478 endclass
3479 END
3480 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
3481
3482 # Duplicate private member variable
3483 lines =<< trim END
3484 vim9script
3485 class C
3486 this.val = 10
3487 this._val = 20
3488 endclass
3489 END
3490 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
3491
3492 # Duplicate public and private member variable
3493 lines =<< trim END
3494 vim9script
3495 class C
3496 this._val = 20
3497 public this.val = 10
3498 endclass
3499 END
3500 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
3501
3502 # Duplicate class member variable
3503 lines =<< trim END
3504 vim9script
3505 class C
3506 static s: string = "abc"
3507 static _s: string = "def"
3508 endclass
3509 END
3510 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
3511
3512 # Duplicate public and private class member variable
3513 lines =<< trim END
3514 vim9script
3515 class C
3516 public static s: string = "abc"
3517 static _s: string = "def"
3518 endclass
3519 END
3520 v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
3521
3522 # Duplicate class and object member variable
3523 lines =<< trim END
3524 vim9script
3525 class C
3526 static val = 10
3527 this.val = 20
3528 def new()
3529 enddef
3530 endclass
3531 var c = C.new()
3532 assert_equal(10, C.val)
3533 assert_equal(20, c.val)
3534 END
3535 v9.CheckScriptSuccess(lines)
3536 enddef
3537
3441 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 3538 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker