@@ -125,6 +125,12 @@ repository:
125125 match : (?<!\.|\$)\b(declare)\b(?!\$|\.)
126126
127127 expression :
128+ patterns :
129+ - include : ' #expressionWithoutIdentifiers'
130+ - include : ' #identifiers'
131+ - include : ' #expressionPunctuations'
132+
133+ expressionWithoutIdentifiers :
128134 patterns :
129135 - include : ' #string'
130136 - include : ' #regex'
@@ -141,8 +147,10 @@ repository:
141147 - include : ' #function-call'
142148 - include : ' #literal'
143149 - include : ' #support-objects'
144- - include : ' #identifiers'
145150 - include : ' #paren-expression'
151+
152+ expressionPunctuations :
153+ patterns :
146154 - include : ' #punctuation-comma'
147155 - include : ' #punctuation-accessor'
148156
@@ -658,20 +666,22 @@ repository:
658666 beginCaptures :
659667 ' 1 ' : { name: storage.modifier.ts }
660668 end : (?=\{)
661- endCaptures :
662- ' 1 ' : { name: punctuation.definition.block.ts }
663669 patterns :
664670 - include : ' #comment'
665671 - include : ' #class-or-interface-heritage'
666672 - include : ' #type-parameters'
667- - match : ({{identifier}})\s*(\.)(?=\s*{{identifier}}(\s*\.\s*{{identifier}})*\s*([,<{]|extends|implements|//|/\*))
673+ # match expressions before matching identifiers
674+ - include : ' #expressionWithoutIdentifiers'
675+ # identifiers are treated as inherited class
676+ - match : ({{identifier}})\s*(\.)(?=\s*{{identifier}}(\s*\.\s*{{identifier}})*\s*)
668677 captures :
669678 ' 1 ' : { name: entity.name.type.module.ts }
670679 ' 2 ' : { name: punctuation.accessor.ts }
671- - match : ({{identifier}})(?=\s*([,<{]|extends|implements|//|/\*))
680+ - match : ({{identifier}})
672681 captures :
673682 ' 1 ' : { name: entity.other.inherited-class.ts }
674- - include : ' #expression'
683+ # match punctuations of the expression
684+ - include : ' #expressionPunctuations'
675685
676686 class-or-interface-body :
677687 begin : \{
0 commit comments