new operator can end at another new operator

Fixes #139
This commit is contained in:
Sheetal Nandi 2016-09-13 12:03:58 -07:00
Родитель 7dbf74c46f
Коммит fed816067f
6 изменённых файлов: 69 добавлений и 4 удалений

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

@ -924,7 +924,7 @@ repository:
beginCaptures:
'1': { name: keyword.operator.new.ts }
# new-expr ends just before any type or call arguments. Type arguments will be picked up by #cast.
end: '(?=[(;),]|$)'
end: '(?=[(;),]|$|((?<!\.|\$)\bnew\b(?!\$)))'
patterns:
- include: '#type'

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

@ -2185,7 +2185,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=[(;),]|$)</string>
<string>(?=[(;),]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
<key>name</key>
<string>new.expr.ts</string>
<key>patterns</key>

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

@ -913,7 +913,7 @@ repository:
beginCaptures:
'1': { name: keyword.operator.new.tsx }
# new-expr ends just before any type or call arguments. Type arguments will be picked up by #cast.
end: '(?=[(;),]|$)'
end: '(?=[(;),]|$|((?<!\.|\$)\bnew\b(?!\$)))'
patterns:
- include: '#type'

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

@ -2571,7 +2571,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=[(;),]|$)</string>
<string>(?=[(;),]|$|((?&lt;!\.|\$)\bnew\b(?!\$)))</string>
<key>name</key>
<string>new.expr.tsx</string>
<key>patterns</key>

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

@ -0,0 +1,62 @@
original file
-----------------------------------
new new Proxy(function fn() {
console.log(this.constructor.name);
}, {});
-----------------------------------
>new new Proxy(function fn() {
^^^
source.ts new.expr.ts keyword.operator.new.ts
^
source.ts new.expr.ts
^^^
source.ts new.expr.ts keyword.operator.new.ts
^
source.ts new.expr.ts
^^^^^
source.ts new.expr.ts entity.name.type.ts
^
source.ts meta.brace.round.ts
^^^^^^^^
source.ts meta.function.ts storage.type.function.ts
^
source.ts meta.function.ts
^^
source.ts meta.function.ts entity.name.function.ts
^
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
^
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
^
source.ts meta.function.ts
^
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
^^
source.ts meta.function.ts meta.block.ts
> console.log(this.constructor.name);
^^^^^^^^^^^^^^^
source.ts meta.function.ts meta.block.ts
^
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
^^^^
source.ts meta.function.ts meta.block.ts variable.language.this.ts
^^^^^^^^^^^^^^^^^
source.ts meta.function.ts meta.block.ts
^
source.ts meta.function.ts meta.block.ts meta.brace.round.ts
^^^
source.ts meta.function.ts meta.block.ts
>}, {});
^
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
^^
source.ts
^
source.ts meta.object-literal.ts punctuation.definition.block.ts
^
source.ts meta.object-literal.ts punctuation.definition.block.ts
^
source.ts meta.brace.round.ts
^^
source.ts

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

@ -0,0 +1,3 @@
new new Proxy(function fn() {
console.log(this.constructor.name);
}, {});