Mercurial > vim
annotate runtime/syntax/moo.vim @ 33278:b5ed566262d3 v9.0.1906
patch 9.0.1906: Vim9: Interfaces should not support class methods and variables
Commit: https://github.com/vim/vim/commit/92d9ee5f4ca0d2de04c39afbafc7609da43fb2e9
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Sun Sep 17 17:03:19 2023 +0200
patch 9.0.1906: Vim9: Interfaces should not support class methods and variables
Problem: Vim9: Interfaces should not support class methods and
variables
Solution: Make sure interface follow the interface specification
Vim9 interface changes to follow the new interface specification:
1) An interface can have only read-only and read-write instance
variables.
2) An interface can have only public instance methods.
3) An interface cannot have class variables and class methods.
4) An interface cannot have private instance variables and private
instance methods.
5) A interface can extend another interface using "extends". The
sub-interface gets all the variables and methods in the super
interface.
That means:
- Interfaces should not support class methods and variables.
- Adjust error numbers and add additional tests.
- Interface methods can be defined in one of the super classes.
- Interface variables can be defined in one of the super classes.
and instance variables can be repeated in sub interfaces.
- Check the class variable types with the type in interface.
closes: #13100
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 17 Sep 2023 17:15:06 +0200 |
parents | 5b7ea82bc18f |
children |
rev | line source |
---|---|
7 | 1 " Vim syntax file |
2 " Language: MOO | |
3 " Maintainer: Timo Frenay <timo@frenay.net> | |
22723 | 4 " Last Change: 2020 Oct 19 |
7 | 5 " Note: Requires Vim 6.0 or above |
6 | |
10048
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
7 " quit when a syntax file was already loaded |
43efa4f5a8ea
commit https://github.com/vim/vim/commit/89bcfda6834aba724d12554a34b9ed49f5789fd5
Christian Brabandt <cb@256bit.org>
parents:
7
diff
changeset
|
8 if exists("b:current_syntax") |
7 | 9 finish |
10 endif | |
11 | |
12 " Initializations | |
13 syn case ignore | |
14 | |
15 " C-style comments | |
16 syn match mooUncommentedError display ~\*/~ | |
17 syn match mooCStyleCommentError display ~/\ze\*~ contained | |
18 syn region mooCStyleComment matchgroup=mooComment start=~/\*~ end=~\*/~ contains=mooCStyleCommentError | |
19 | |
20 " Statements | |
21 if exists("moo_extended_cstyle_comments") | |
22 syn match mooIdentifier display ~\%(\%(/\*.\{-}\*/\s*\)*\)\@>\<\h\w*\>~ contained transparent contains=mooCStyleComment,@mooKeyword,mooType,mooVariable | |
23 else | |
24 syn match mooIdentifier display ~\<\h\w*\>~ contained transparent contains=@mooKeyword,mooType,mooVariable | |
25 endif | |
26 syn keyword mooStatement break continue else elseif endfor endfork endif endtry endwhile finally for if try | |
27 syn keyword mooStatement except fork while nextgroup=mooIdentifier skipwhite | |
28 syn keyword mooStatement return nextgroup=mooString skipwhite | |
29 | |
30 " Operators | |
31 syn keyword mooOperatorIn in | |
32 | |
33 " Error constants | |
34 syn keyword mooAny ANY | |
35 syn keyword mooErrorConstant E_ARGS E_INVARG E_DIV E_FLOAT E_INVIND E_MAXREC E_NACC E_NONE E_PERM E_PROPNF E_QUOTA E_RANGE E_RECMOVE E_TYPE E_VARNF E_VERBNF | |
36 | |
37 " Builtin variables | |
38 syn match mooType display ~\<\%(ERR\|FLOAT\|INT\|LIST\|NUM\|OBJ\|STR\)\>~ | |
39 syn match mooVariable display ~\<\%(args\%(tr\)\=\|caller\|dobj\%(str\)\=\|iobj\%(str\)\=\|player\|prepstr\|this\|verb\)\>~ | |
40 | |
41 " Strings | |
42 syn match mooStringError display ~[^\t -[\]-~]~ contained | |
43 syn match mooStringSpecialChar display ~\\["\\]~ contained | |
44 if !exists("moo_no_regexp") | |
45 " Regular expressions | |
46 syn match mooRegexp display ~%%~ contained containedin=mooString,mooRegexpParentheses transparent contains=NONE | |
47 syn region mooRegexpParentheses display matchgroup=mooRegexpOr start=~%(~ skip=~%%~ end=~%)~ contained containedin=mooString,mooRegexpParentheses transparent oneline | |
48 syn match mooRegexpOr display ~%|~ contained containedin=mooString,mooRegexpParentheses | |
49 endif | |
50 if !exists("moo_no_pronoun_sub") | |
51 " Pronoun substitutions | |
52 syn match mooPronounSub display ~%%~ contained containedin=mooString transparent contains=NONE | |
53 syn match mooPronounSub display ~%[#dilnopqrst]~ contained containedin=mooString | |
54 syn match mooPronounSub display ~%\[#[dilnt]\]~ contained containedin=mooString | |
55 syn match mooPronounSub display ~%(\h\w*)~ contained containedin=mooString | |
56 syn match mooPronounSub display ~%\[[dilnt]\h\w*\]~ contained containedin=mooString | |
57 syn match mooPronounSub display ~%<\%([dilnt]:\)\=\a\+>~ contained containedin=mooString | |
58 endif | |
59 if exists("moo_unmatched_quotes") | |
60 syn region mooString matchgroup=mooStringError start=~"~ end=~$~ contains=@mooStringContents keepend | |
61 syn region mooString start=~"~ skip=~\\.~ end=~"~ contains=@mooStringContents oneline keepend | |
62 else | |
63 syn region mooString start=~"~ skip=~\\.~ end=~"\|$~ contains=@mooStringContents keepend | |
64 endif | |
65 | |
66 " Numbers and object numbers | |
67 syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~ | |
68 syn match mooObject display ~#-\=\d\+\>~ | |
69 | |
70 " Properties and verbs | |
71 if exists("moo_builtin_properties") | |
72 "Builtin properties | |
73 syn keyword mooBuiltinProperty contents f location name owner programmer r w wizard contained containedin=mooPropRef | |
74 endif | |
75 if exists("moo_extended_cstyle_comments") | |
76 syn match mooPropRef display ~\.\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword | |
77 syn match mooVerbRef display ~:\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword | |
78 else | |
79 syn match mooPropRef display ~\.\s*\h\w*\>~ transparent contains=@mooKeyword | |
80 syn match mooVerbRef display ~:\s*\h\w*\>~ transparent contains=@mooKeyword | |
81 endif | |
82 | |
83 " Builtin functions, core properties and core verbs | |
84 if exists("moo_extended_cstyle_comments") | |
85 syn match mooBuiltinFunction display ~\<\h\w*\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\ze(~ contains=mooCStyleComment | |
86 syn match mooCorePropOrVerb display ~\$\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\%(in\>\)\@!\h\w*\>~ contains=mooCStyleComment,@mooKeyword | |
87 else | |
88 syn match mooBuiltinFunction display ~\<\h\w*\s*\ze(~ contains=NONE | |
89 syn match mooCorePropOrVerb display ~\$\s*\%(in\>\)\@!\h\w*\>~ contains=@mooKeyword | |
90 endif | |
91 if exists("moo_unknown_builtin_functions") | |
92 syn match mooUnknownBuiltinFunction ~\<\h\w*\>~ contained containedin=mooBuiltinFunction contains=mooKnownBuiltinFunction | |
93 " Known builtin functions as of version 1.8.1 of the server | |
94 " Add your own extensions to this group if you like | |
95 syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained | |
96 endif | |
97 | |
22723 | 98 " Enclosed expressions |
7 | 99 syn match mooUnenclosedError display ~[')\]|}]~ |
100 syn match mooParenthesesError display ~[';\]|}]~ contained | |
101 syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError | |
102 syn match mooBracketsError display ~[');|}]~ contained | |
103 syn region mooBrackets start=~\[~ end=~\]~ transparent contains=@mooEnclosedContents,mooBracketsError | |
104 syn match mooBracesError display ~[');\]|]~ contained | |
105 syn region mooBraces start=~{~ end=~}~ transparent contains=@mooEnclosedContents,mooBracesError | |
106 syn match mooQuestionError display ~[');\]}]~ contained | |
107 syn region mooQuestion start=~?~ end=~|~ transparent contains=@mooEnclosedContents,mooQuestionError | |
108 syn match mooCatchError display ~[);\]|}]~ contained | |
109 syn region mooCatch matchgroup=mooExclamation start=~`~ end=~'~ transparent contains=@mooEnclosedContents,mooCatchError,mooExclamation | |
110 if exists("moo_extended_cstyle_comments") | |
111 syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>!=\@!~ contained contains=mooCStyleComment | |
112 else | |
113 syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*!=\@!~ contained | |
114 endif | |
115 | |
116 " Comments | |
117 syn match mooCommentSpecialChar display ~\\["\\]~ contained transparent contains=NONE | |
118 syn match mooComment ~[\t !%&*+,\-/<=>?@^|]\@<!\s*"\([^\"]\|\\.\)*"\s*;~ contains=mooStringError,mooCommentSpecialChar | |
119 | |
120 " Non-code | |
121 syn region mooNonCode start=~^\s*@\<~ end=~$~ | |
122 syn match mooNonCode display ~^\.$~ | |
123 syn match mooNonCode display ~^\s*\d\+:~he=e-1 | |
124 | |
125 " Overriding matches | |
126 syn match mooRangeOperator display ~\.\.~ transparent contains=NONE | |
127 syn match mooOrOperator display ~||~ transparent contains=NONE | |
128 if exists("moo_extended_cstyle_comments") | |
129 syn match mooScattering ~[,{]\@<=\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>?~ transparent contains=mooCStyleComment | |
130 else | |
131 syn match mooScattering ~[,{]\@<=\s*?~ transparent contains=NONE | |
132 endif | |
133 | |
134 " Clusters | |
135 syn cluster mooKeyword contains=mooStatement,mooOperatorIn,mooAny,mooErrorConstant | |
136 syn cluster mooStringContents contains=mooStringError,mooStringSpecialChar | |
137 syn cluster mooEnclosedContents contains=TOP,mooUnenclosedError,mooComment,mooNonCode | |
138 | |
139 " Define the default highlighting. | |
140 hi def link mooUncommentedError Error | |
141 hi def link mooCStyleCommentError Error | |
142 hi def link mooCStyleComment Comment | |
143 hi def link mooStatement Statement | |
144 hi def link mooOperatorIn Operator | |
145 hi def link mooAny Constant " link this to Keyword if you want | |
146 hi def link mooErrorConstant Constant | |
147 hi def link mooType Type | |
148 hi def link mooVariable Type | |
149 hi def link mooStringError Error | |
150 hi def link mooStringSpecialChar SpecialChar | |
151 hi def link mooRegexpOr SpecialChar | |
152 hi def link mooPronounSub SpecialChar | |
153 hi def link mooString String | |
154 hi def link mooNumber Number | |
155 hi def link mooObject Number | |
156 hi def link mooBuiltinProperty Type | |
157 hi def link mooBuiltinFunction Function | |
158 hi def link mooUnknownBuiltinFunction Error | |
159 hi def link mooKnownBuiltinFunction Function | |
160 hi def link mooCorePropOrVerb Identifier | |
161 hi def link mooUnenclosedError Error | |
162 hi def link mooParenthesesError Error | |
163 hi def link mooBracketsError Error | |
164 hi def link mooBracesError Error | |
165 hi def link mooQuestionError Error | |
166 hi def link mooCatchError Error | |
167 hi def link mooExclamation Exception | |
168 hi def link mooComment Comment | |
169 hi def link mooNonCode PreProc | |
170 | |
171 let b:current_syntax = "moo" | |
172 | |
173 " vim: ts=8 |