Mercurial > vim
view runtime/syntax/clean.vim @ 32960:d5c05e15cf81 v9.0.1780
patch 9.0.1780: Vim9 type not defined during object creation
Commit: https://github.com/vim/vim/commit/618e47d1cd93954bad26d47e5353b4f1432daa5e
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Tue Aug 22 21:29:28 2023 +0200
patch 9.0.1780: Vim9 type not defined during object creation
Problem: Vim9 type not defined during object creation
Solution: Define type during object creation and not during class
definition, parse mulit-line member initializers, fix lock
initialization
If type is not specified for a member, set it during object creation
instead of during class definition. Add a runtime type check for the
object member initialization expression
Also, while at it, when copying an object or class, make sure the lock
is correctly initialized.
And finally, parse multi-line member initializers correctly.
closes: #11957
closes: #12868
closes: #12869
closes: #12881
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Co-authored-by: LemonBoy <thatlemon@gmail.com>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 22 Aug 2023 21:45:02 +0200 |
parents | 46763b01cd9a |
children |
line wrap: on
line source
" Vim syntax file " Language: Clean " Author: Pieter van Engelen <pietere@sci.kun.nl> " Co-Author: Arthur van Leeuwen <arthurvl@sci.kun.nl> " Last Change: 2013 Oct 15 by Jurriƫn Stutterheim " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " Some Clean-keywords syn keyword cleanConditional if case syn keyword cleanLabel let! with where in of syn keyword cleanSpecial Start syn keyword cleanKeyword infixl infixr infix syn keyword cleanBasicType Int Real Char Bool String syn keyword cleanSpecialType World ProcId Void Files File syn keyword cleanModuleSystem module implementation definition system syn keyword cleanTypeClass class instance export " Import highlighting syn region cleanIncludeRegion start="^\s*\(from\|import\|\s\+\(as\|qualified\)\)" end="\n" contains=cleanIncludeKeyword keepend syn keyword cleanIncludeKeyword contained from import as qualified " To do some Denotation Highlighting syn keyword cleanBoolDenot True False syn region cleanStringDenot start=+"+ skip=+\(\(\\\\\)\+\|\\"\)+ end=+"+ display syn match cleanCharDenot "'\(\\\\\|\\'\|[^'\\]\)\+'" display syn match cleanIntegerDenot "[\~+-]\?\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>" display syn match cleanRealDenot "[\~+-]\?\d\+\.\d\+\(E[\~+-]\?\d\+\)\?" display " To highlight the use of lists, tuples and arrays syn region cleanList start="\[" end="\]" contains=ALL syn region cleanRecord start="{" end="}" contains=ALL syn region cleanArray start="{:" end=":}" contains=ALL syn match cleanTuple "([^=]*,[^=]*)" contains=ALL " To do some Comment Highlighting syn region cleanComment start="/\*" end="\*/" contains=cleanComment,cleanTodo fold syn region cleanComment start="//.*" end="$" display contains=cleanTodo syn keyword cleanTodo TODO FIXME XXX contained " Now for some useful type definition recognition syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)\s*\(infix[lr]\=\)\=\s*\d\=\s*::.*->.*" contains=cleanSpecial,cleanBasicType,cleanSpecialType,cleanKeyword " Define the default highlighting. " Only when an item doesn't have highlighting yet " Comments hi def link cleanComment Comment " Constants and denotations hi def link cleanStringDenot String hi def link cleanCharDenot Character hi def link cleanIntegerDenot Number hi def link cleanBoolDenot Boolean hi def link cleanRealDenot Float " Identifiers " Statements hi def link cleanTypeClass Keyword hi def link cleanConditional Conditional hi def link cleanLabel Label hi def link cleanKeyword Keyword " Generic Preprocessing hi def link cleanIncludeKeyword Include hi def link cleanModuleSystem PreProc " Type hi def link cleanBasicType Type hi def link cleanSpecialType Type hi def link cleanFuncTypeDef Typedef " Special hi def link cleanSpecial Special hi def link cleanList Special hi def link cleanArray Special hi def link cleanRecord Special hi def link cleanTuple Special " Error " Todo hi def link cleanTodo Todo let b:current_syntax = "clean" let &cpo = s:cpo_save unlet s:cpo_save " vim: ts=4