Mercurial > vim
view runtime/syntax/lprolog.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 | 46763b01cd9a |
children |
line wrap: on
line source
" Vim syntax file " Language: LambdaProlog (Teyjus) " Filenames: *.mod *.sig " Maintainer: Markus Mottl <markus.mottl@gmail.com> " URL: http://www.ocaml.info/vim/syntax/lprolog.vim " Last Change: 2006 Feb 05 " 2001 Apr 26 - Upgraded for new Vim version " 2000 Jun 5 - Initial release " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " Lambda Prolog is case sensitive. syn case match syn match lprologBrackErr "\]" syn match lprologParenErr ")" syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName " Enclosing delimiters syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr " General identifiers syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>" syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>" syn match lprologOperator "/" " Comments syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo syn region lprologComment start="%" end="$" contains=lprologTodo syn keyword lprologTodo contained TODO FIXME XXX syn match lprologInteger "\<\d\+\>" syn match lprologReal "\<\(\d\+\)\=\.\d+\>" syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+ " Clause definitions syn region lprologClause start="^\w\+" end=":-\|\." " Modules syn region lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\." " Types syn match lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator syn match lprologTypeName "\<\w\+\>" contained " Keywords syn keyword lprologKeyword end import accumulate accum_sig syn keyword lprologKeyword local localkind closed sig syn keyword lprologKeyword kind exportdef useonly syn keyword lprologKeyword infixl infixr infix prefix syn keyword lprologKeyword prefixr postfix postfixl syn keyword lprologSpecial pi sigma is true fail halt stop not " Operators syn match lprologSpecial ":-" syn match lprologSpecial "->" syn match lprologSpecial "=>" syn match lprologSpecial "\\" syn match lprologSpecial "!" syn match lprologSpecial "," syn match lprologSpecial ";" syn match lprologSpecial "&" syn match lprologOperator "+" syn match lprologOperator "-" syn match lprologOperator "*" syn match lprologOperator "\~" syn match lprologOperator "\^" syn match lprologOperator "<" syn match lprologOperator ">" syn match lprologOperator "=<" syn match lprologOperator ">=" syn match lprologOperator "::" syn match lprologOperator "=" syn match lprologOperator "\." syn match lprologOperator ":" syn match lprologOperator "|" syn match lprologCommentErr "\*/" syn sync minlines=50 syn sync maxlines=500 " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link lprologComment Comment hi def link lprologTodo Todo hi def link lprologKeyword Keyword hi def link lprologSpecial Special hi def link lprologOperator Operator hi def link lprologIdentifier Normal hi def link lprologInteger Number hi def link lprologReal Number hi def link lprologString String hi def link lprologCommentErr Error hi def link lprologBrackErr Error hi def link lprologParenErr Error hi def link lprologModuleName Special hi def link lprologTypeName Identifier hi def link lprologVariable Keyword hi def link lprologAtom Normal hi def link lprologClause Type let b:current_syntax = "lprolog" " vim: ts=8