Mercurial > vim
view runtime/syntax/latte.vim @ 33090:461541d860ac v9.0.1830
patch 9.0.1830: Vim9: crash when accessing a null object
Commit: https://github.com/vim/vim/commit/d7085a06358c22250a27186bb7d52112ed4addd1
Author: Gianmaria Bajo <mg1979.git@gmail.com>
Date: Thu Aug 31 18:15:26 2023 +0200
patch 9.0.1830: Vim9: crash when accessing a null object
Problem: Vim9: crash when accessing a null object
Solution: Check accessing a NULL object in def function
An object is NULL when the variable is declared, but the constructor
isn't called. Accessing/setting a member on the object crashed Vim.
Note: this happens inside def functions, at script level things work
differently. Accessing a NULL object member results in E1360
(correctly), while setting a value on it results in E1012 (type
mismatch) so there's still something to fix.
closes: #12973
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Gianmaria Bajo <mg1979.git@gmail.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 31 Aug 2023 18:30:03 +0200 |
parents | 46763b01cd9a |
children |
line wrap: on
line source
" Vim syntax file " Language: Latte " Maintainer: Nick Moffitt, <nick@zork.net> " Last Change: 14 June, 2000 " " Notes: " I based this on the TeX and Scheme syntax files (but mostly scheme). " See http://www.latte.org for info on the language. " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif syn match latteError "[{}\\]" syn match latteOther "\\{" syn match latteOther "\\}" syn match latteOther "\\\\" setlocal iskeyword=33,43,45,48-57,63,65-90,95,97-122,_ syn region latteVar matchgroup=SpecialChar start=!\\[A-Za-z_]!rs=s+1 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteVar matchgroup=SpecialChar start=!\\[=\&][A-Za-z_]!rs=s+2 end=![^A-Za-z0-9?!+_-]!me=e-1 contains=ALLBUT,latteNumber,latteOther syn region latteString start=+\\"+ skip=+\\\\"+ end=+\\"+ syn region latteGroup matchgroup=Delimiter start="{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteUnquote matchgroup=Delimiter start="\\,{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteSplice matchgroup=Delimiter start="\\,@{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=ALLBUT,latteSyntax syn region latteQuote matchgroup=Delimiter start="\\'{" skip="\\[{}]" matchgroup=Delimiter end="}" syn region latteQuote matchgroup=Delimiter start="\\`{" skip="\\[{}]" matchgroup=Delimiter end="}" contains=latteUnquote,latteSplice syn match latteOperator '\\/' syn match latteOperator '=' syn match latteComment "\\;.*$" " This was gathered by slurping in the index. syn keyword latteSyntax __FILE__ __latte-version__ contained syn keyword latteSyntax _bal-tag _pre _tag add and append apply back contained syn keyword latteSyntax caar cadr car cdar cddr cdr ceil compose contained syn keyword latteSyntax concat cons def defmacro divide downcase contained syn keyword latteSyntax empty? equal? error explode file-contents contained syn keyword latteSyntax floor foreach front funcall ge? getenv contained syn keyword latteSyntax greater-equal? greater? group group? gt? html contained syn keyword latteSyntax if include lambda le? length less-equal? contained syn keyword latteSyntax less? let lmap load-file load-library lt? macro contained syn keyword latteSyntax member? modulo multiply not nth operator? contained syn keyword latteSyntax or ordinary quote process-output push-back contained syn keyword latteSyntax push-front quasiquote quote random rdc reverse contained syn keyword latteSyntax set! snoc splicing unquote strict-html4 contained syn keyword latteSyntax string-append string-ge? string-greater-equal? contained syn keyword latteSyntax string-greater? string-gt? string-le? contained syn keyword latteSyntax string-less-equal? string-less? string-lt? contained syn keyword latteSyntax string? subseq substr subtract contained syn keyword latteSyntax upcase useless warn while zero? contained " If it's good enough for scheme... syn sync match matchPlace grouphere NONE "^[^ \t]" " ... i.e. synchronize on a line that starts at the left margin " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link latteSyntax Statement hi def link latteVar Function hi def link latteString String hi def link latteQuote String hi def link latteDelimiter Delimiter hi def link latteOperator Operator hi def link latteComment Comment hi def link latteError Error let b:current_syntax = "latte"