Mercurial > vim
view runtime/syntax/sexplib.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 | 15fa3923cc49 |
children |
line wrap: on
line source
" Vim syntax file " Language: S-expressions as used in Sexplib " Filenames: *.sexp " Maintainers: Markus Mottl <markus.mottl@gmail.com> " URL: https://github.com/ocaml/vim-ocaml " Last Change: 2020 Dec 31 - Updated header for Vim contribution (MM) " 2017 Apr 11 - Improved matching of negative numbers (MM) " 2012 Jun 20 - Fixed a block comment highlighting bug (MM) " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") && b:current_syntax == "sexplib" finish endif " Sexplib is case sensitive. syn case match " Comments syn keyword sexplibTodo contained TODO FIXME XXX NOTE syn region sexplibBlockComment matchgroup=sexplibComment start="#|" matchgroup=sexplibComment end="|#" contains=ALLBUT,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibEncl,sexplibComment syn match sexplibSexpComment "#;" skipwhite skipempty nextgroup=sexplibQuotedAtomComment,sexplibUnquotedAtomComment,sexplibListComment,sexplibComment syn region sexplibQuotedAtomComment start=+"+ skip=+\\\\\|\\"+ end=+"+ contained syn match sexplibUnquotedAtomComment /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ contained syn region sexplibListComment matchgroup=sexplibComment start="(" matchgroup=sexplibComment end=")" contained contains=ALLBUT,sexplibEncl,sexplibString,sexplibQuotedAtom,sexplibUnquotedAtom,sexplibTodo,sexplibNumber,sexplibFloat syn match sexplibComment ";.*" contains=sexplibTodo " Atoms syn match sexplibUnquotedAtom /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*/ syn region sexplibQuotedAtom start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match sexplibNumber "-\=\<\d\(_\|\d\)*[l|L|n]\?\>" syn match sexplibNumber "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>" syn match sexplibNumber "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>" syn match sexplibNumber "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>" syn match sexplibFloat "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>" " Lists syn region sexplibEncl transparent matchgroup=sexplibEncl start="(" matchgroup=sexplibEncl end=")" contains=ALLBUT,sexplibParenErr " Errors syn match sexplibUnquotedAtomErr /\([^;()" \t#|]\|#[^;()" \t|]\||[^;()" \t#]\)[^;()" \t]*\(#|\||#\)[^;()" \t]*/ syn match sexplibParenErr ")" " Synchronization syn sync minlines=50 syn sync maxlines=500 " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_sexplib_syntax_inits") if version < 508 let did_sexplib_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink sexplibParenErr Error HiLink sexplibUnquotedAtomErr Error HiLink sexplibComment Comment HiLink sexplibSexpComment Comment HiLink sexplibQuotedAtomComment Include HiLink sexplibUnquotedAtomComment Comment HiLink sexplibBlockComment Comment HiLink sexplibListComment Comment HiLink sexplibBoolean Boolean HiLink sexplibCharacter Character HiLink sexplibNumber Number HiLink sexplibFloat Float HiLink sexplibUnquotedAtom Identifier HiLink sexplibEncl Identifier HiLink sexplibQuotedAtom Keyword HiLink sexplibTodo Todo HiLink sexplibEncl Keyword delcommand HiLink endif let b:current_syntax = "sexplib" " vim: ts=8