Mirror of the Vim source from https://github.com/vim/vim
Revision | 3516e35f409f85622f1f71f129e8a7a4acbabffc (tree) |
---|---|
Time | 2023-01-27 22:30:04 |
Author | Bram Moolenaar <Bram@vim....> |
Commiter | Bram Moolenaar |
patch 9.0.1249: cannot export an abstract class
Commit: https://github.com/vim/vim/commit/657aea7fc47fb919ce76fad64ba0ec55a1af80f1
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 27 13:16:19 2023 +0000
@@ -3442,4 +3442,6 @@ | ||
3442 | 3442 | INIT(= N_("E1358: Using \"super\" not in a child class")); |
3443 | 3443 | EXTERN char e_cannot_define_new_function_in_abstract_class[] |
3444 | 3444 | INIT(= N_("E1359: Cannot define a \"new\" function in an abstract class")); |
3445 | -#endif | |
3445 | +EXTERN char e_invalid_command_str_expected_str[] | |
3446 | + INIT(= N_("E476: Invalid command: %s, expected %s")); | |
3447 | +#endif |
@@ -128,7 +128,7 @@ | ||
128 | 128 | EX_NEEDARG|EX_EXTRA|EX_NOTRLCOM, |
129 | 129 | ADDR_NONE), |
130 | 130 | EXCMD(CMD_abstract, "abstract", ex_class, |
131 | - EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK, | |
131 | + EX_EXTRA|EX_TRLBAR|EX_CMDWIN|EX_LOCK_OK|EX_EXPORT, | |
132 | 132 | ADDR_NONE), |
133 | 133 | EXCMD(CMD_all, "all", ex_all, |
134 | 134 | EX_BANG|EX_RANGE|EX_COUNT|EX_TRLBAR, |
@@ -164,6 +164,24 @@ | ||
164 | 164 | v9.CheckScriptSuccess(lines) |
165 | 165 | enddef |
166 | 166 | |
167 | +def Test_class_interface_wrong_end() | |
168 | + var lines =<< trim END | |
169 | + vim9script | |
170 | + abstract class SomeName | |
171 | + this.member = 'text' | |
172 | + endinterface | |
173 | + END | |
174 | + v9.CheckScriptFailure(lines, 'E476: Invalid command: endinterface, expected endclass') | |
175 | + | |
176 | + lines =<< trim END | |
177 | + vim9script | |
178 | + export interface AnotherName | |
179 | + this.member: string | |
180 | + endclass | |
181 | + END | |
182 | + v9.CheckScriptFailure(lines, 'E476: Invalid command: endclass, expected endinterface') | |
183 | +enddef | |
184 | + | |
167 | 185 | def Test_class_member_initializer() |
168 | 186 | var lines =<< trim END |
169 | 187 | vim9script |
@@ -845,6 +863,20 @@ | ||
845 | 863 | enddef |
846 | 864 | END |
847 | 865 | v9.CheckScriptSuccess(lines) |
866 | + | |
867 | + var imported =<< trim END | |
868 | + vim9script | |
869 | + export abstract class EnterExit | |
870 | + def Enter(): void | |
871 | + enddef | |
872 | + def Exit(): void | |
873 | + enddef | |
874 | + endclass | |
875 | + END | |
876 | + writefile(imported, 'XdefIntf2.vim', 'D') | |
877 | + | |
878 | + lines[1] = " import './XdefIntf2.vim' as defIntf" | |
879 | + v9.CheckScriptSuccess(lines) | |
848 | 880 | enddef |
849 | 881 | |
850 | 882 | def Test_class_implements_interface() |
@@ -696,6 +696,8 @@ | ||
696 | 696 | static int included_patches[] = |
697 | 697 | { /* Add new patch number below this line */ |
698 | 698 | /**/ |
699 | + 1249, | |
700 | +/**/ | |
699 | 701 | 1248, |
700 | 702 | /**/ |
701 | 703 | 1247, |
@@ -423,7 +423,7 @@ | ||
423 | 423 | char *wrong_name = is_class ? "endinterface" : "endclass"; |
424 | 424 | if (checkforcmd(&p, wrong_name, is_class ? 5 : 4)) |
425 | 425 | { |
426 | - semsg(_(e_invalid_command_str), line); | |
426 | + semsg(_(e_invalid_command_str_expected_str), line, end_name); | |
427 | 427 | break; |
428 | 428 | } |
429 | 429 |