Mercurial > vim
view runtime/syntax/ps1.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 | 5c98ea5f5d6e |
children |
line wrap: on
line source
" Vim syntax file " Language: Windows PowerShell " URL: https://github.com/PProvost/vim-ps1 " Last Change: 2020 Nov 24 " " The following settings are available for tuning syntax highlighting: " let ps1_nofold_blocks = 1 " let ps1_nofold_sig = 1 " let ps1_nofold_region = 1 if exists("b:current_syntax") finish endif " Operators contain dashes setlocal iskeyword+=- " PowerShell doesn't care about case syn case ignore " Sync-ing method syn sync minlines=100 " Certain tokens can't appear at the top level of the document syn cluster ps1NotTop contains=@ps1Comment,ps1CDocParam,ps1FunctionDeclaration " Comments and special comment words syn keyword ps1CommentTodo TODO FIXME XXX TBD HACK NOTE contained syn match ps1CDocParam /.*/ contained syn match ps1CommentDoc /^\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained syn match ps1CommentDoc /#\s*\zs\.\w\+\>/ nextgroup=ps1CDocParam contained syn match ps1Comment /#.*/ contains=ps1CommentTodo,ps1CommentDoc,@Spell syn region ps1Comment start="<#" end="#>" contains=ps1CommentTodo,ps1CommentDoc,@Spell " Language keywords and elements syn keyword ps1Conditional if else elseif switch default syn keyword ps1Repeat while for do until break continue foreach in syn match ps1Repeat /\<foreach\>/ nextgroup=ps1Block skipwhite syn match ps1Keyword /\<while\>/ nextgroup=ps1Block skipwhite syn match ps1Keyword /\<where\>/ nextgroup=ps1Block skipwhite syn keyword ps1Exception begin process end exit inlinescript parallel sequence syn keyword ps1Keyword try catch finally throw syn keyword ps1Keyword return filter in trap param data dynamicparam syn keyword ps1Constant $true $false $null syn match ps1Constant +\$?+ syn match ps1Constant +\$_+ syn match ps1Constant +\$\$+ syn match ps1Constant +\$^+ " Keywords reserved for future use syn keyword ps1Keyword class define from using var " Function declarations syn keyword ps1Keyword function nextgroup=ps1Function skipwhite syn keyword ps1Keyword filter nextgroup=ps1Function skipwhite syn keyword ps1Keyword workflow nextgroup=ps1Function skipwhite syn keyword ps1Keyword configuration nextgroup=ps1Function skipwhite syn keyword ps1Keyword class nextgroup=ps1Function skipwhite syn keyword ps1Keyword enum nextgroup=ps1Function skipwhite " Function declarations and invocations syn match ps1Cmdlet /\v(add|clear|close|copy|enter|exit|find|format|get|hide|join|lock|move|new|open|optimize|pop|push|redo|remove|rename|reset|search|select|Set|show|skip|split|step|switch|undo|unlock|watch)(-\w+)+/ contained syn match ps1Cmdlet /\v(connect|disconnect|read|receive|send|write)(-\w+)+/ contained syn match ps1Cmdlet /\v(backup|checkpoint|compare|compress|convert|convertfrom|convertto|dismount|edit|expand|export|group|import|initialize|limit|merge|mount|out|publish|restore|save|sync|unpublish|update)(-\w+)+/ contained syn match ps1Cmdlet /\v(debug|measure|ping|repair|resolve|test|trace)(-\w+)+/ contained syn match ps1Cmdlet /\v(approve|assert|build|complete|confirm|deny|deploy|disable|enable|install|invoke|register|request|restart|resume|start|stop|submit|suspend|uninstall|unregister|wait)(-\w+)+/ contained syn match ps1Cmdlet /\v(block|grant|protect|revoke|unblock|unprotect)(-\w+)+/ contained syn match ps1Cmdlet /\v(use)(-\w+)+/ contained " Other functions syn match ps1Function /\w\+\(-\w\+\)\+/ contains=ps1Cmdlet " Type declarations syn match ps1Type /\[[a-z_][a-z0-9_.,\[\]]\+\]/ " Variable references syn match ps1ScopeModifier /\(global:\|local:\|private:\|script:\)/ contained syn match ps1Variable /\$\w\+\(:\w\+\)\?/ contains=ps1ScopeModifier syn match ps1Variable /\${\w\+\(:\?[[:alnum:]_()]\+\)\?}/ contains=ps1ScopeModifier " Operators syn keyword ps1Operator -eq -ne -ge -gt -lt -le -like -notlike -match -notmatch -replace -split -contains -notcontains syn keyword ps1Operator -ieq -ine -ige -igt -ile -ilt -ilike -inotlike -imatch -inotmatch -ireplace -isplit -icontains -inotcontains syn keyword ps1Operator -ceq -cne -cge -cgt -clt -cle -clike -cnotlike -cmatch -cnotmatch -creplace -csplit -ccontains -cnotcontains syn keyword ps1Operator -in -notin syn keyword ps1Operator -is -isnot -as -join syn keyword ps1Operator -and -or -not -xor -band -bor -bnot -bxor syn keyword ps1Operator -f syn match ps1Operator /!/ syn match ps1Operator /=/ syn match ps1Operator /+=/ syn match ps1Operator /-=/ syn match ps1Operator /\*=/ syn match ps1Operator /\/=/ syn match ps1Operator /%=/ syn match ps1Operator /+/ syn match ps1Operator /-\(\s\|\d\|\.\|\$\|(\)\@=/ syn match ps1Operator /\*/ syn match ps1Operator /\// syn match ps1Operator /|/ syn match ps1Operator /%/ syn match ps1Operator /&/ syn match ps1Operator /::/ syn match ps1Operator /,/ syn match ps1Operator /\(^\|\s\)\@<=\. \@=/ " Regular Strings " These aren't precisely correct and could use some work syn region ps1String start=/"/ skip=/`"/ end=/"/ contains=@ps1StringSpecial,@Spell syn region ps1String start=/'/ skip=/''/ end=/'/ " Here-Strings syn region ps1String start=/@"$/ end=/^"@/ contains=@ps1StringSpecial,@Spell syn region ps1String start=/@'$/ end=/^'@/ " Interpolation syn match ps1Escape /`./ syn region ps1Interpolation matchgroup=ps1InterpolationDelimiter start="$(" end=")" contained contains=ALLBUT,@ps1NotTop syn region ps1NestedParentheses start="(" skip="\\\\\|\\)" matchgroup=ps1Interpolation end=")" transparent contained syn cluster ps1StringSpecial contains=ps1Escape,ps1Interpolation,ps1Variable,ps1Boolean,ps1Constant,ps1BuiltIn,@Spell " Numbers syn match ps1Number "\(\<\|-\)\@<=\(0[xX]\x\+\|\d\+\)\([KMGTP][B]\)\=\(\>\|-\)\@=" syn match ps1Number "\(\(\<\|-\)\@<=\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[dD]\=" syn match ps1Number "\<\d\+[eE][-+]\=\d\+[dD]\=\>" syn match ps1Number "\<\d\+\([eE][-+]\=\d\+\)\=[dD]\>" " Constants syn match ps1Boolean "$\%(true\|false\)\>" syn match ps1Constant /\$null\>/ syn match ps1BuiltIn "$^\|$?\|$_\|$\$" syn match ps1BuiltIn "$\%(args\|error\|foreach\|home\|input\)\>" syn match ps1BuiltIn "$\%(match\(es\)\?\|myinvocation\|host\|lastexitcode\)\>" syn match ps1BuiltIn "$\%(ofs\|shellid\|stacktrace\)\>" " Named Switch syn match ps1Label /\s-\w\+/ " Folding blocks if !exists('g:ps1_nofold_blocks') syn region ps1Block start=/{/ end=/}/ transparent fold endif if !exists('g:ps1_nofold_region') syn region ps1Region start=/#region/ end=/#endregion/ transparent fold keepend extend endif if !exists('g:ps1_nofold_sig') syn region ps1Signature start=/# SIG # Begin signature block/ end=/# SIG # End signature block/ transparent fold endif " Setup default color highlighting hi def link ps1Number Number hi def link ps1Block Block hi def link ps1Region Region hi def link ps1Exception Exception hi def link ps1Constant Constant hi def link ps1String String hi def link ps1Escape SpecialChar hi def link ps1InterpolationDelimiter Delimiter hi def link ps1Conditional Conditional hi def link ps1Cmdlet Function hi def link ps1Function Identifier hi def link ps1Variable Identifier hi def link ps1Boolean Boolean hi def link ps1Constant Constant hi def link ps1BuiltIn StorageClass hi def link ps1Type Type hi def link ps1ScopeModifier StorageClass hi def link ps1Comment Comment hi def link ps1CommentTodo Todo hi def link ps1CommentDoc Tag hi def link ps1CDocParam Identifier hi def link ps1Operator Operator hi def link ps1Repeat Repeat hi def link ps1RepeatAndCmdlet Repeat hi def link ps1Keyword Keyword hi def link ps1KeywordAndCmdlet Keyword hi def link ps1Label Label let b:current_syntax = "ps1"