Skip to content

Commit b98c485

Browse files
authored
Support interface and enum declaration with no body. (#330)
Fixes #329.
2 parents 9d446ab + 4d34ad7 commit b98c485

File tree

5 files changed

+34
-12
lines changed

5 files changed

+34
-12
lines changed

grammars/csharp.tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,14 +1055,14 @@
10551055
<key>begin</key>
10561056
<string>(?=\benum\b)</string>
10571057
<key>end</key>
1058-
<string>(?&lt;=\})</string>
1058+
<string>(?&lt;=\})|(?=;)</string>
10591059
<key>patterns</key>
10601060
<array>
10611061
<dict>
10621062
<key>begin</key>
10631063
<string>(?=enum)</string>
10641064
<key>end</key>
1065-
<string>(?=\{)</string>
1065+
<string>(?=\{)|(?=;)</string>
10661066
<key>patterns</key>
10671067
<array>
10681068
<dict>
@@ -1190,7 +1190,7 @@
11901190
<key>begin</key>
11911191
<string>(?=\binterface\b)</string>
11921192
<key>end</key>
1193-
<string>(?&lt;=\})</string>
1193+
<string>(?&lt;=\})|(?=;)</string>
11941194
<key>patterns</key>
11951195
<array>
11961196
<dict>
@@ -1212,7 +1212,7 @@
12121212
</dict>
12131213
</dict>
12141214
<key>end</key>
1215-
<string>(?=\{)</string>
1215+
<string>(?=\{)|(?=;)</string>
12161216
<key>patterns</key>
12171217
<array>
12181218
<dict>

grammars/csharp.tmLanguage.cson

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -679,11 +679,11 @@ repository:
679679
]
680680
"enum-declaration":
681681
begin: "(?=\\benum\\b)"
682-
end: "(?<=\\})"
682+
end: "(?<=\\})|(?=;)"
683683
patterns: [
684684
{
685685
begin: "(?=enum)"
686-
end: "(?=\\{)"
686+
end: "(?=\\{)|(?=;)"
687687
patterns: [
688688
{
689689
include: "#comment"
@@ -758,7 +758,7 @@ repository:
758758
]
759759
"interface-declaration":
760760
begin: "(?=\\binterface\\b)"
761-
end: "(?<=\\})"
761+
end: "(?<=\\})|(?=;)"
762762
patterns: [
763763
{
764764
begin: '''
@@ -771,7 +771,7 @@ repository:
771771
name: "storage.type.interface.cs"
772772
"2":
773773
name: "entity.name.type.interface.cs"
774-
end: "(?=\\{)"
774+
end: "(?=\\{)|(?=;)"
775775
patterns: [
776776
{
777777
include: "#comment"

src/csharp.tmLanguage.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,10 @@ repository:
336336

337337
enum-declaration:
338338
begin: (?=\benum\b)
339-
end: (?<=\})
339+
end: (?<=\})|(?=;)
340340
patterns:
341341
- begin: (?=enum)
342-
end: (?=\{)
342+
end: (?=\{)|(?=;)
343343
patterns:
344344
- include: '#comment'
345345
- match: (enum)\s+(@?[_[:alpha:]][_[:alnum:]]*)
@@ -375,7 +375,7 @@ repository:
375375

376376
interface-declaration:
377377
begin: (?=\binterface\b)
378-
end: (?<=\})
378+
end: (?<=\})|(?=;)
379379
patterns:
380380
- begin: |-
381381
(?x)
@@ -384,7 +384,7 @@ repository:
384384
beginCaptures:
385385
'1': { name: storage.type.interface.cs }
386386
'2': { name: entity.name.type.interface.cs }
387-
end: (?=\{)
387+
end: (?=\{)|(?=;)
388388
patterns:
389389
- include: '#comment'
390390
- include: '#type-parameter-list'

test/enum.tests.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@ describe("Enums", () => {
2222
Token.Punctuation.CloseBrace]);
2323
});
2424

25+
it("enum with no body", async () => {
26+
27+
const input = `enum E;`;
28+
const tokens = await tokenize(input);
29+
30+
tokens.should.deep.equal([
31+
Token.Keyword.Definition.Enum,
32+
Token.Identifier.EnumName("E"),
33+
Token.Punctuation.Semicolon]);
34+
});
35+
2536
it("enum with base type", async () => {
2637

2738
const input = `enum E : byte { }`;

test/interface.tests.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@ describe("Interfaces", () => {
2222
Token.Punctuation.CloseBrace]);
2323
});
2424

25+
it("interface with no body", async () => {
26+
27+
const input = `interface IFoo;`;
28+
const tokens = await tokenize(input);
29+
30+
tokens.should.deep.equal([
31+
Token.Keyword.Definition.Interface,
32+
Token.Identifier.InterfaceName("IFoo"),
33+
Token.Punctuation.Semicolon]);
34+
});
35+
2536
it("interface inheritance", async () => {
2637

2738
const input = `

0 commit comments

Comments
 (0)