Allow abstract class expression

Fixes #728
This commit is contained in:
Sheetal Nandi 2019-03-07 15:12:14 -08:00
Родитель 06d49b5ea9
Коммит 17761d144b
5 изменённых файлов: 48 добавлений и 4 удалений

Просмотреть файл

@ -880,9 +880,10 @@ repository:
class-expression:
name: meta.class.ts
# allows anonymous class
begin: '{{startOfIdentifier}}(class)\b(?=\s+|[<{]|\/[\/*])'
begin: '{{startOfIdentifier}}(?:(abstract)\s+)?(class)\b(?=\s+|[<{]|\/[\/*])'
beginCaptures:
'1': { name: storage.type.class.ts }
'1': { name: storage.modifier.ts }
'2': { name: storage.type.class.ts }
end: (?<=\})
patterns:
- include: '#class-declaration-or-expression-patterns'

Просмотреть файл

@ -2824,10 +2824,15 @@
<key>name</key>
<string>meta.class.ts</string>
<key>begin</key>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.ts</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.class.ts</string>

Просмотреть файл

@ -2828,10 +2828,15 @@
<key>name</key>
<string>meta.class.tsx</string>
<key>begin</key>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(?:(abstract)\s+)?(class)\b(?=\s+|[&lt;{]|\/[\/*])</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.modifier.tsx</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.class.tsx</string>

Просмотреть файл

@ -0,0 +1,32 @@
original file
-----------------------------------
export default abstract class AbstractClass {}
-----------------------------------
Grammar: TypeScript.tmLanguage
-----------------------------------
>export default abstract class AbstractClass {}
^^^^^^
source.ts meta.export.default.ts keyword.control.export.ts
^
source.ts meta.export.default.ts
^^^^^^^
source.ts meta.export.default.ts keyword.control.default.ts
^
source.ts meta.export.default.ts
^^^^^^^^
source.ts meta.export.default.ts meta.class.ts storage.modifier.ts
^
source.ts meta.export.default.ts meta.class.ts
^^^^^
source.ts meta.export.default.ts meta.class.ts storage.type.class.ts
^
source.ts meta.export.default.ts meta.class.ts
^^^^^^^^^^^^^
source.ts meta.export.default.ts meta.class.ts entity.name.type.class.ts
^
source.ts meta.export.default.ts meta.class.ts
^
source.ts meta.export.default.ts meta.class.ts punctuation.definition.block.ts
^
source.ts meta.export.default.ts meta.class.ts punctuation.definition.block.ts

1
tests/cases/Issue728.ts Normal file
Просмотреть файл

@ -0,0 +1 @@
export default abstract class AbstractClass {}