Fix typeof to end expression on extends

Fixes #907
This commit is contained in:
Sheetal Nandi 2023-02-08 15:01:59 -08:00
Родитель 2638649110
Коммит 6ae8fcb18b
5 изменённых файлов: 56 добавлений и 3 удалений

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

@ -1766,7 +1766,7 @@ repository:
begin: '{{startOfIdentifier}}typeof{{endOfIdentifier}}'
beginCaptures:
'0': { name: keyword.operator.expression.typeof.ts }
end: (?=[,);}\]=>:&|{\?]|$|{{endOfStatement}})
end: (?=[,);}\]=>:&|{\?]|(extends\s+)|$|{{endOfStatement}})
patterns:
- include: '#expression'

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

@ -5744,7 +5744,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=[,);}\]=&gt;:&amp;|{\?]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
<string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
<key>patterns</key>
<array>
<dict>

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

@ -5690,7 +5690,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=[,);}\]=&gt;:&amp;|{\?]|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
<string>(?=[,);}\]=&gt;:&amp;|{\?]|(extends\s+)|$|;|^\s*$|(?:^\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b))</string>
<key>patterns</key>
<array>
<dict>

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

@ -0,0 +1,52 @@
original file
-----------------------------------
type A = typeof a extends number ? 0 : 1;
-----------------------------------
Grammar: TypeScript.tmLanguage
-----------------------------------
>type A = typeof a extends number ? 0 : 1;
^^^^
source.ts meta.type.declaration.ts storage.type.type.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts entity.name.type.alias.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts keyword.operator.assignment.ts
^
source.ts meta.type.declaration.ts
^^^^^^
source.ts meta.type.declaration.ts keyword.operator.expression.typeof.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts variable.other.readwrite.ts
^
source.ts meta.type.declaration.ts
^^^^^^^
source.ts meta.type.declaration.ts storage.modifier.ts
^
source.ts meta.type.declaration.ts
^^^^^^
source.ts meta.type.declaration.ts support.type.primitive.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts keyword.operator.ternary.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts constant.numeric.decimal.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts keyword.operator.ternary.ts
^
source.ts meta.type.declaration.ts
^
source.ts meta.type.declaration.ts constant.numeric.decimal.ts
^
source.ts punctuation.terminator.statement.ts

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

@ -0,0 +1 @@
type A = typeof a extends number ? 0 : 1;