Fix instanceof used in ternary expresison.

Fixes #602
This commit is contained in:
Sheetal Nandi 2018-04-18 11:45:28 -07:00
Родитель 929ee616cc
Коммит 3f27a794a2
5 изменённых файлов: 60 добавлений и 3 удалений

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

@ -1190,7 +1190,7 @@ repository:
begin: '{{startOfIdentifier}}(instanceof){{endOfIdentifier}}'
beginCaptures:
'1': { name: keyword.operator.expression.instanceof.ts }
end: (?<=\))|(?=[;),}\]:]|\|\||\&\&|$|({{startOfIdentifier}}function((\s+{{identifier}})|(\s*[\(]))))
end: (?<=\))|(?=[;),}\]:?]|\|\||\&\&|$|({{startOfIdentifier}}function((\s+{{identifier}})|(\s*[\(]))))
patterns:
- include: '#type'

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

@ -3738,7 +3738,7 @@
</dict>
</dict>
<key>end</key>
<string>(?&lt;=\))|(?=[;),}\]:]|\|\||\&amp;\&amp;|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
<string>(?&lt;=\))|(?=[;),}\]:?]|\|\||\&amp;\&amp;|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
<key>patterns</key>
<array>
<dict>

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

@ -3742,7 +3742,7 @@
</dict>
</dict>
<key>end</key>
<string>(?&lt;=\))|(?=[;),}\]:]|\|\||\&amp;\&amp;|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
<string>(?&lt;=\))|(?=[;),}\]:?]|\|\||\&amp;\&amp;|$|((?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))function((\s+[_$[:alpha:]][_$[:alnum:]]*)|(\s*[\(]))))</string>
<key>patterns</key>
<array>
<dict>

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

@ -0,0 +1,56 @@
original file
-----------------------------------
let result = foo instanceof Foo ? foo.bar() : null;
-----------------------------------
Grammar: TypeScript.tmLanguage
-----------------------------------
>let result = foo instanceof Foo ? foo.bar() : null;
^^^
source.ts meta.var.expr.ts storage.type.ts
^
source.ts meta.var.expr.ts
^^^^^^
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
^
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
^
source.ts meta.var.expr.ts keyword.operator.assignment.ts
^
source.ts meta.var.expr.ts
^^^
source.ts meta.var.expr.ts variable.other.readwrite.ts
^
source.ts meta.var.expr.ts
^^^^^^^^^^
source.ts meta.var.expr.ts keyword.operator.expression.instanceof.ts
^
source.ts meta.var.expr.ts
^^^
source.ts meta.var.expr.ts entity.name.type.ts
^
source.ts meta.var.expr.ts
^
source.ts meta.var.expr.ts keyword.operator.ternary.ts
^
source.ts meta.var.expr.ts
^^^
source.ts meta.var.expr.ts meta.function-call.ts variable.other.object.ts
^
source.ts meta.var.expr.ts meta.function-call.ts punctuation.accessor.ts
^^^
source.ts meta.var.expr.ts meta.function-call.ts entity.name.function.ts
^
source.ts meta.var.expr.ts meta.brace.round.ts
^
source.ts meta.var.expr.ts meta.brace.round.ts
^
source.ts meta.var.expr.ts
^
source.ts meta.var.expr.ts keyword.operator.ternary.ts
^
source.ts meta.var.expr.ts
^^^^
source.ts meta.var.expr.ts constant.language.null.ts
^
source.ts punctuation.terminator.statement.ts

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

@ -0,0 +1 @@
let result = foo instanceof Foo ? foo.bar() : null;