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