Mercurial > vim
view runtime/syntax/haste.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 | 43efa4f5a8ea |
children |
line wrap: on
line source
" Vim syntax file " Language: HASTE - a language for VLSI IC programming " Maintainer: M. Tranchero - maurizio.tranchero?gmail.com " Credits: some parts have been taken from vhdl, verilog, and C syntax " files " Version: 0.9 " Last Change: 0.9 improvement of haste numbers detection " Change: 0.8 error matching for wrong hierarchical connections " Change: 0.7 added more rules to highlight pre-processor directives " HASTE if exists("b:current_syntax") finish endif " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif " case is significant syn case match " HASTE keywords syn keyword hasteStatement act alias arb array begin bitvec syn keyword hasteStatement bitwidth boolvec broad case syn keyword hasteStatement cast chan const dataprobe do edge syn keyword hasteStatement else end export false ff fi file syn keyword hasteStatement fit for forever func if import syn keyword hasteStatement inprobe is les main narb narrow syn keyword hasteStatement negedge od of or outprobe pas syn keyword hasteStatement posedge probe proc ram ramreg syn keyword hasteStatement repeat rom romreg sample sel si syn keyword hasteStatement sign sizeof skip stop then true syn keyword hasteStatement type until var wait wire syn keyword hasteFutureExt Z ffe partial syn keyword hasteVerilog buf reg while " Special match for "if", "or", and "else" since "else if" " and other "else+if" combination shouldn't be highlighted. " The right keyword is "or" syn match hasteStatement "\<\(if\|then\|else\|fi\)\>" syn match hasteNone "\<else\s\+if\>$" syn match hasteNone "\<else\s\+if\>\s" syn match hasteNone "\<elseif\>\s" syn match hasteNone "\<elsif\>\s" syn match hasteStatement "\<\(case\|is\|si\)\>" syn match hasteStatement "\<\(repeat\|until\)\>" syn match hasteStatement "\<\(forever\|do\|od\)\>" syn match hasteStatement "\<\(for\|do\|od\)\>" syn match hasteStatement "\<\(do\|or\|od\)\>" syn match hasteStatement "\<\(sel\|les\)\>" syn match hasteError "\<\d\+[_a-zA-Z]\+\>" syn match hasteError "\(\([[:alnum:]]\+\s*(\s\+\|)\s*,\)\)\s*\([[:alnum:]]\+\s*(\)" " Predifined Haste types syn keyword hasteType bool " Values for standard Haste types " syn match hasteVector "\'[0L1HXWZU\-\?]\'" syn match hasteVector "0b\"[01_]\+\"" syn match hasteVector "0x\"[0-9a-f_]\+\"" syn match hasteCharacter "'.'" " syn region hasteString start=+"+ end=+"+ syn match hasteIncluded display contained "<[^>]*>" syn match hasteIncluded display contained "<[^"]*>" syn region hasteInclude start="^\s*#include\>\s*" end="$" contains=hasteIncluded,hasteString " integer numbers syn match hasteNumber "\d\+\^[[:alnum:]]*[-+]\{0,1\}[[:alnum:]]*" syn match hasteNumber "-\=\<\d\+\(\^[+\-]\=\d\+\)\>" syn match hasteNumber "-\=\<\d\+\>" " syn match hasteNumber "0*2#[01_]\+#\(\^[+\-]\=\d\+\)\=" " syn match hasteNumber "0*16#[0-9a-f_]\+#\(\^[+\-]\=\d\+\)\=" " operators syn keyword hasteSeparators & , . \| syn keyword hasteExecution \|\| ; @ syn keyword hasteOperator := ? ! : syn keyword hasteTypeConstr "[" << >> .. "]" ~ syn keyword hasteExprOp < <= >= > = # <> + - * == ## syn keyword hasteMisc ( ) 0x 0b " syn match hasteSeparators "[&:\|,.]" syn match hasteOperator ":=" syn match hasteOperator ":" syn match hasteOperator "?" syn match hasteOperator "!" syn match hasteExecution "||" syn match hasteExecution ";" syn match hasteExecution "@" syn match hasteType "\[\[" syn match hasteType "\]\]" syn match hasteType "<<" syn match hasteType ">>" syn match hasteExprOp "<" syn match hasteExprOp "<=" syn match hasteExprOp ">=" syn match hasteExprOp ">" syn match hasteExprOp "<>" syn match hasteExprOp "=" syn match hasteExprOp "==" syn match hasteExprOp "##" " syn match hasteExprOp "#" syn match hasteExprOp "*" syn match hasteExprOp "+" syn region hasteComment start="/\*" end="\*/" contains=@Spell syn region hasteComment start="{" end="}" contains=@Spell syn match hasteComment "//.*" contains=@Spell " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link hasteSpecial Special hi def link hasteStatement Statement hi def link hasteCharacter String hi def link hasteString String hi def link hasteVector String hi def link hasteBoolean String hi def link hasteComment Comment hi def link hasteNumber String hi def link hasteTime String hi def link hasteType Type hi def link hasteGlobal Error hi def link hasteError Error hi def link hasteAttribute Type " hi def link hasteSeparators Special hi def link hasteExecution Special hi def link hasteTypeConstr Special hi def link hasteOperator Type hi def link hasteExprOp Type hi def link hasteMisc String hi def link hasteFutureExt Error hi def link hasteVerilog Error hi def link hasteDefine Macro hi def link hasteInclude Include " hi def link hastePreProc Preproc " hi def link hastePreProcVar Special let b:current_syntax = "haste" " vim: ts=8