Mercurial > vim
view runtime/syntax/cs.vim @ 33791:370543108ba1 v9.0.2114
patch 9.0.2114: overflow detection not accurate when adding digits
Commit: https://github.com/vim/vim/commit/22cbc8a4e17ce61aa460c451a26e1bff2c3d2af9
Author: Christian Brabandt <cb@256bit.org>
Date: Sun Nov 19 10:47:21 2023 +0100
patch 9.0.2114: overflow detection not accurate when adding digits
Problem: overflow detection not accurate when adding digits
Solution: Use a helper function
Use a helper function to better detect overflows before adding integer
digits to a long or an integer variable respectively. Signal the
overflow to the caller function.
closes: #13539
Signed-off-by: Christian Brabandt <cb@256bit.org>
Signed-off-by: Michael Henry <vim@drmikehenry.com>
Signed-off-by: Ernie Rael <errael@raelity.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 19 Nov 2023 11:00:07 +0100 |
parents | 15c80d8bc515 |
children |
line wrap: on
line source
" Vim syntax file " Language: C# " Maintainer: Nick Jensen <nickspoon@gmail.com> " Former Maintainers: Anduin Withers <awithers@anduin.com> " Johannes Zellner <johannes@zellner.org> " Last Change: 2022-11-16 " Filenames: *.cs " License: Vim (see :h license) " Repository: https://github.com/nickspoons/vim-cs " " References: " - ECMA-334 5th Edition: C# Language Specification " https://www.ecma-international.org/publications-and-standards/standards/ecma-334/ " - C# Language Design: Draft 6th Edition and later proposals " https://github.com/dotnet/csharplang if exists('b:current_syntax') finish endif let s:save_cpo = &cpoptions set cpoptions&vim syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic syn keyword csType nint nuint " contextual syn keyword csStorage enum interface namespace struct syn match csStorage "\<record\ze\_s\+@\=\h\w*\_s*[<(:{;]" syn match csStorage "\%(\<\%(partial\|new\|public\|protected\|internal\|private\|abstract\|sealed\|static\|unsafe\|readonly\)\)\@9<=\_s\+record\>" syn match csStorage "\<record\ze\_s\+\%(class\|struct\)" syn match csStorage "\<delegate\>" syn keyword csRepeat break continue do for foreach goto return while syn keyword csConditional else if switch syn keyword csLabel case default syn match csNamespaceAlias "@\=\h\w*\ze\_s*::" display syn match csGlobalNamespaceAlias "global\ze\_s*::" display syn cluster csNamespaceAlias contains=csGlobalNamespaceAlias,csNamespaceAlias,csNamespaceAliasQualifier " user labels syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+ " Function pointers syn match csType "\<delegate\s*\*" contains=csOpSymbols nextgroup=csManagedModifier skipwhite skipempty syn keyword csManagedModifier managed unmanaged contained " Modifiers syn match csUsingModifier "\<global\ze\_s\+using\>" syn keyword csAccessModifier internal private protected public syn keyword csModifier operator nextgroup=csCheckedModifier skipwhite skipempty syn keyword csCheckedModifier checked contained " TODO: in new out syn keyword csModifier abstract const event override readonly sealed static virtual volatile syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>" syn match csModifier "\<partial\ze\_s\+\%(class\|struct\|interface\|record\|void\)\>" syn keyword csException try catch finally throw when syn keyword csLinq ascending by descending equals from group in into join let on orderby select syn match csLinq "\<where\>" " Type parameter constraint clause syn match csStorage "\<where\>\ze\_s\+@\=\h\w*\_s*:" " Async syn keyword csAsyncModifier async syn keyword csAsyncOperator await syn match csStorage "\<extern\ze\s\+alias\>" syn match csStorage "\%(\<extern\s\+\)\@16<=alias\>" syn match csStatement "\<\%(checked\|unchecked\|unsafe\)\ze\_s*{" syn match csStatement "\<fixed\ze\_s*(" syn keyword csStatement lock syn match csStatement "\<yield\ze\_s\+\%(return\|break\)\>" syn match csAccessor "\<\%(get\|set\|init\|add\|remove\)\ze\_s*\%([;{]\|=>\)" syn keyword csAccess base syn match csAccess "\<this\>" " Extension method parameter modifier syn match csModifier "\<this\ze\_s\+@\=\h" syn keyword csUnspecifiedStatement as in is nameof out params ref sizeof stackalloc using syn keyword csUnsupportedStatement value syn keyword csUnspecifiedKeyword explicit implicit " Operators syn keyword csTypeOf typeof nextgroup=csTypeOfOperand,csTypeOfError skipwhite skipempty syn region csTypeOfOperand matchgroup=csParens start="(" end=")" contained contains=csType syn match csTypeOfError "[^([:space:]]" contained syn match csKeywordOperator "\<\%(checked\|unchecked\)\ze\_s*(" " Punctuation syn match csBraces "[{}[\]]" display syn match csParens "[()]" display syn match csOpSymbols "+\{1,2}" display syn match csOpSymbols "-\{1,2}" display syn match csOpSymbols "=\{1,2}" display syn match csOpSymbols ">\{1,2}" display syn match csOpSymbols "<\{1,2}" display syn match csOpSymbols "[!><+\-*/]=" display syn match csOpSymbols "[!*/^]" display syn match csOpSymbols "=>" display syn match csEndColon ";" display syn match csLogicSymbols "&&" display syn match csLogicSymbols "||" display syn match csLogicSymbols "?" display syn match csLogicSymbols ":" display syn match csNamespaceAliasQualifier "::" display " Generics syn region csGeneric matchgroup=csGenericBraces start="<" end=">" oneline contains=csType,csGeneric,@csNamespaceAlias,csUserType,csUserIdentifier,csUserInterface,csUserMethod " Comments " " PROVIDES: @csCommentHook syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD syn region csBlockComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell syn match csLineComment "//.*$" contains=@csCommentHook,csTodo,@Spell syn cluster csComment contains=csLineComment,csBlockComment syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend " xml markup inside '///' and /**...*/ comments syn cluster xmlRegionHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle syn cluster xmlCdataHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle syn cluster xmlStartTagHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle syn cluster xmlTagHook add=csXmlTag syn cluster xmlAttribHook add=csXmlAttrib " https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags syn keyword csXmlTag contained summary remarks syn keyword csXmlTag contained returns param paramref exception value syn keyword csXmlTag contained para list c code example syn keyword csXmlTag contained inheritdoc include syn keyword csXmlTag contained see seealso syn keyword csXmlTag contained typeparam typeparamref syn keyword csXmlTag contained b i u br a syn keyword csXmlAttrib contained cref href syn match csXmlLineCommentLeader "///" contained syn match csXmlLineComment "///.*$" contains=csXmlLineCommentLeader,@csXml,@Spell keepend syn match csXmlBlockCommentMiddle "^\s*\zs\*" contained syn region csXmlBlockComment start="/\*\*" end="\*/" contains=@csXml,@Spell,csXmlBlockCommentMiddle keepend syn include @csXml syntax/xml.vim hi def link xmlRegion Comment " Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here. syn spell default " Pre-processing directives syn region csPreProcDeclaration start="^\s*\zs#\s*\%(define\|undef\)\>" end="$" contains=csLineComment keepend syn region csPreProcConditional start="^\s*\zs#\s*\%(if\|elif\)\>" end="$" contains=csLineComment keepend syn region csPreProcConditional start="^\s*\zs#\s*\%(else\|endif\)\>" end="$" contains=csLineComment keepend syn region csPreProcLine start="^\s*\zs#\s*line\>" end="$" contains=csLineComment keepend syn region csPreProcDiagnostic start="^\s*\zs#\s*\%(error\|warning\)\>" end="$" syn region csPreProcConditionalSection matchgroup=csPreProcRegion start="^\s*#\s*region\>.*" end="^\s*#\s*endregion\>.*" transparent fold contains=TOP syn region csPreProcPragma start="^\s*\zs#\s*pragma\>" end="$" contains=csLineComment keepend syn region csPreProcNullable start="^\s*\zs#\s*nullable\>" end="$" contains=csLineComment keepend if expand('%:e') == 'csx' || getline('1') =~ '^#!.*\<dotnet-script\>' syn region csPreProcInclude start="^\s*\zs#\s*\%(load\|r\)\>" end="$" contains=csLineComment keepend syn match csShebang "\%^#!.*" display endif syn cluster csPreProcessor contains=csPreProc.* syn region csClassType start="\<class\>"hs=s+6 end=">" end="[:{]"me=e-1 contains=csClass " csUserType may be defined by user scripts/plugins - it should be contained in csNewType syn region csNewType start="\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew,@csNamespaceAlias,csUserType syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs syn keyword csNew new contained syn keyword csClass class contained syn keyword csIsAs is as syn keyword csBoolean false true syn keyword csNull null " Strings and constants syn match csSpecialError "\\." contained syn match csSpecialCharError "[^']" contained " Character literals syn match csSpecialChar +\\["\\'0abfnrtv]+ contained display syn match csUnicodeNumber +\\x\x\{1,4}+ contained contains=csUnicodeSpecifier display syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier display syn match csUnicodeSpecifier +\\[uUx]+ contained display syn region csString matchgroup=csQuote start=+"+ end=+"\%(u8\)\=+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display syn match csCharacter "'\\''" contains=csSpecialChar display syn match csCharacter "'[^\\]'" display " Numbers syn case ignore syn match csInteger "\<0b[01_]*[01]\%([lu]\|lu\|ul\)\=\>" display syn match csInteger "\<\d\+\%(_\+\d\+\)*\%([lu]\|lu\|ul\)\=\>" display syn match csInteger "\<0x[[:xdigit:]_]*\x\%([lu]\|lu\|ul\)\=\>" display syn match csReal "\<\d\+\%(_\+\d\+\)*\.\d\+\%(_\+\d\+\)*\%\(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=" display syn match csReal "\.\d\+\%(_\+\d\+\)*\%(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=\>" display syn match csReal "\<\d\+\%(_\+\d\+\)*e[-+]\=\d\+\%(_\+\d\+\)*[fdm]\=\>" display syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display syn case match syn cluster csNumber contains=csInteger,csReal syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"\%(u8\)\=+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat syn match csEscapedInterpolation "{{" transparent contains=NONE display syn match csEscapedInterpolation "}}" transparent contains=NONE display syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=@csNumber,csBoolean,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display syn match csInterpolationAlignDel +,+ contained display syn match csInterpolationFormatDel +:+ contained display syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csVerbatimQuote,@Spell syn match csVerbatimQuote +""+ contained syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"\%(u8\)\=+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString syn cluster csLiteral contains=csBoolean,@csNumber,csCharacter,@csString,csNull syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed syn cluster csAll contains=@csLiteral,csClassType,@csComment,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csOpSymbols,csParens,@csPreProcessor,csSummary,@csNamespaceAlias,csType,csUnicodeNumber,csUserType,csUserIdentifier,csUserInterface,csUserMethod " Keyword identifiers syn match csIdentifier "@\h\w*" " The default highlighting. hi def link csUnspecifiedStatement Statement hi def link csUnsupportedStatement Statement hi def link csUnspecifiedKeyword Keyword hi def link csGlobalNamespaceAlias Include hi def link csType Type hi def link csClassType Type hi def link csIsType Type hi def link csStorage Structure hi def link csClass Structure hi def link csNew Statement hi def link csIsAs Keyword hi def link csAccessor Keyword hi def link csAccess Keyword hi def link csLinq Statement hi def link csStatement Statement hi def link csRepeat Repeat hi def link csConditional Conditional hi def link csLabel Label hi def link csException Exception hi def link csModifier StorageClass hi def link csAccessModifier csModifier hi def link csAsyncModifier csModifier hi def link csCheckedModifier csModifier hi def link csManagedModifier csModifier hi def link csUsingModifier csModifier hi def link csTodo Todo hi def link csComment Comment hi def link csLineComment csComment hi def link csBlockComment csComment hi def link csKeywordOperator Keyword hi def link csAsyncOperator csKeywordOperator hi def link csTypeOf csKeywordOperator hi def link csTypeOfOperand Typedef hi def link csTypeOfError Error hi def link csOpSymbols Operator hi def link csLogicSymbols Operator hi def link csSpecialError Error hi def link csSpecialCharError Error hi def link csString String hi def link csQuote String hi def link csInterpolatedString String hi def link csVerbatimString String hi def link csInterVerbString String hi def link csVerbatimQuote SpecialChar hi def link csPreProc PreProc hi def link csPreProcDeclaration Define hi def link csPreProcConditional PreCondit hi def link csPreProcLine csPreProc hi def link csPreProcDiagnostic csPreProc hi def link csPreProcRegion csPreProc hi def link csPreProcPragma csPreProc hi def link csPreProcNullable csPreProc hi def link csPreProcInclude csPreProc hi def link csShebang csPreProc hi def link csConstant Constant hi def link csNull Constant hi def link csBoolean Boolean hi def link csCharacter Character hi def link csSpecialChar SpecialChar hi def link csInteger Number hi def link csReal Float hi def link csUnicodeNumber SpecialChar hi def link csUnicodeSpecifier SpecialChar hi def link csInterpolationDelimiter Delimiter hi def link csInterpolationAlignDel csInterpolationDelimiter hi def link csInterpolationFormat csInterpolationDelimiter hi def link csInterpolationFormatDel csInterpolationDelimiter hi def link csGenericBraces csBraces " xml markup hi def link csXmlLineCommentLeader Comment hi def link csXmlLineComment Comment hi def link csXmlBlockComment Comment hi def link csXmlBlockCommentMiddle csXmlBlockComment hi def link csXmlTag Statement hi def link csXmlAttrib Statement let b:current_syntax = 'cs' let &cpoptions = s:save_cpo unlet s:save_cpo " vim: vts=16,28