Skip to content

Commit 4e4e287

Browse files
authored
Merge pull request #43 from dkearns/differentiate-uses-of-overloaded-statement-keywords
Differentiate uses of overloaded statement keywords
2 parents d031398 + d97ce36 commit 4e4e287

File tree

6 files changed

+77
-19
lines changed

6 files changed

+77
-19
lines changed

Diff for: syntax/cs.vim

+7-5
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
3636
syn keyword csAccessModifier internal private protected public
3737
" TODO: in new out
3838
syn keyword csModifier abstract const event override readonly sealed static virtual volatile
39-
syn match csModifier "\<\%(extern\|unsafe\)\>"
39+
syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>"
4040
syn match csModifier "\<partial\ze\_s\+\%(class\|struct\|interface\|record\|void\)\>"
4141

4242
syn keyword csException try catch finally throw when
@@ -49,21 +49,24 @@ syn keyword csAsyncOperator await
4949
syn match csStorage "\<extern\ze\s\+alias\>"
5050
syn match csStorage "\%(\<extern\s\+\)\@16<=alias\>"
5151

52-
syn match csUnsafeStatement "\<unsafe\ze\_s*{"
52+
syn match csStatement "\<\%(checked\|unchecked\|unsafe\)\ze\_s*{"
53+
syn match csStatement "\<fixed\ze\_s*("
54+
syn keyword csStatement lock
55+
syn match csStatement "\<yield\ze\_s\+\%(return\|break\)\>"
5356

54-
syn keyword csUnspecifiedStatement as base checked fixed in is lock nameof operator out params ref sizeof stackalloc this unchecked using
57+
syn keyword csUnspecifiedStatement as base in is nameof operator out params ref sizeof stackalloc this using
5558
syn keyword csUnsupportedStatement value
5659
syn keyword csUnspecifiedKeyword explicit implicit
5760

5861
" Contextual Keywords
59-
syn match csContextualStatement "\<yield\ze\_s\+\%(return\|break\)\>"
6062
syn match csContextualStatement "\<\%(get\|set\|init\|add\|remove\)\ze\_s*\%([;{]\|=>\)"
6163
syn match csContextualStatement "\<where\>\ze[^:]\+:"
6264

6365
" Operators
6466
syn keyword csTypeOf typeof nextgroup=csTypeOfOperand,csTypeOfError skipwhite skipempty
6567
syn region csTypeOfOperand matchgroup=csParens start="(" end=")" contained contains=csType
6668
syn match csTypeOfError "[^([:space:]]" contained
69+
syn match csKeywordOperator "\<\%(checked\|unchecked\)\ze\_s*("
6770

6871
" Punctuation
6972
syn match csBraces "[{}\[\]]" display
@@ -208,7 +211,6 @@ hi def link csModifier StorageClass
208211
hi def link csAccessModifier csModifier
209212
hi def link csConstant Constant
210213
hi def link csException Exception
211-
hi def link csUnsafeStatement Statement
212214
hi def link csUnspecifiedStatement Statement
213215
hi def link csUnsupportedStatement Statement
214216
hi def link csUnspecifiedKeyword Keyword

Diff for: test/identifiers.vader

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Given cs (verbatim identifiers):
2+
var @new = 42;
3+
4+
Execute:
5+
AssertEqual 'csIdentifier', SyntaxOf('@new')
6+
7+
Given cs (yield as identifier):
8+
var yield = 42;
9+
10+
Execute:
11+
AssertEqual '', SyntaxOf('yield')
12+

Diff for: test/keywords.vader

-13
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,3 @@ Execute:
1212
AssertEqual 'csModifier', SyntaxAt(1, 1)
1313
AssertEqual 'csType', SyntaxAt(1, 8)
1414

15-
Given cs (keyword identifiers):
16-
var @new = 42;
17-
18-
Execute:
19-
normal! f@
20-
AssertEqual 'csIdentifier', SyntaxAt()
21-
22-
Given cs (unsafe statement):
23-
unsafe { /* boom! */ }
24-
25-
Execute:
26-
AssertEqual 'csUnsafeStatement', SyntaxAt(1, 1)
27-

Diff for: test/modifiers.vader

+7-1
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,11 @@ Given cs (partial methods):
3030
partial void Foobar();
3131

3232
Execute:
33-
AssertEqual 'csModifier', SyntaxAt()
33+
AssertEqual 'csModifier', SyntaxAt(1, 1)
34+
35+
Given cs (fixed modifier):
36+
fixed byte foobar[42];
37+
38+
Execute:
39+
AssertEqual 'csModifier', SyntaxAt(1, 1)
3440

Diff for: test/operators.vader

+13
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,16 @@ Given cs (await operator):
103103

104104
Execute:
105105
AssertEqual 'csAsyncOperator', SyntaxAt(1, 1)
106+
107+
Given cs (checked operator):
108+
var foobar = checked(42 + 1);
109+
110+
Execute:
111+
AssertEqual 'csKeywordOperator', SyntaxOf('checked')
112+
113+
Given cs (unchecked operator):
114+
var foobar = unchecked(42 + 1);
115+
116+
Execute:
117+
AssertEqual 'csKeywordOperator', SyntaxOf('unchecked')
118+

Diff for: test/statements.vader

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Given cs (unsafe statement):
2+
unsafe { /* boom! */ }
3+
4+
Execute:
5+
AssertEqual 'csStatement', SyntaxAt(1, 1)
6+
7+
Given cs (checked statement):
8+
checked { /* boom! */ }
9+
10+
Execute:
11+
AssertEqual 'csStatement', SyntaxAt(1, 1)
12+
13+
Given cs (unchecked statement):
14+
unchecked { /* boom! */ }
15+
16+
Execute:
17+
AssertEqual 'csStatement', SyntaxAt(1, 1)
18+
19+
Given cs (fixed statement):
20+
fixed (int* i = foobar) { /* ... */ }
21+
22+
Execute:
23+
AssertEqual 'csStatement', SyntaxAt(1, 1)
24+
25+
Given cs (lock statement):
26+
lock (foobar) { /* ... */ }
27+
28+
Execute:
29+
AssertEqual 'csStatement', SyntaxAt(1, 1)
30+
31+
Given cs (yield statement):
32+
yield break;
33+
yield return 42;
34+
35+
Execute:
36+
AssertEqual 'csStatement', SyntaxAt(1, 1)
37+
AssertEqual 'csStatement', SyntaxAt(2, 1)
38+

0 commit comments

Comments
 (0)