diff --git a/TypeScriptReact.YAML-tmLanguage b/TypeScriptReact.YAML-tmLanguage
index a8ec19cc..024ecd6d 100644
--- a/TypeScriptReact.YAML-tmLanguage
+++ b/TypeScriptReact.YAML-tmLanguage
@@ -34,25 +34,29 @@ repository:
begin: |-
(?x)
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
- (?=(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?))
- end: (?!\s*(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?))
+ (?=(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?))
+ end: (?!\s*(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?))
patterns:
- include: '#jsx-tag-without-attributes'
jsx-tag-without-attributes:
name: meta.tag.without-attributes.tsx
- begin: (<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?)
- end: ()\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?)
+ begin: (<)\s*(?:([_$a-zA-Z][-$\w.]*)(?)
+ end: ()\s*(?:([_$a-zA-Z][-$\w.]*)(?)
beginCaptures:
'1': {name: punctuation.definition.tag.begin.tsx}
- '2': {name: entity.name.tag.tsx}
- '3': {name: support.class.component.tsx}
- '4': {name: punctuation.definition.tag.end.tsx}
+ '2': {name: entity.name.tag.namespace.tsx}
+ '3': {name: punctuation.separator.namespace.tsx}
+ '4': {name: entity.name.tag.tsx}
+ '5': {name: support.class.component.tsx}
+ '6': {name: punctuation.definition.tag.end.tsx}
endCaptures:
'1': {name: punctuation.definition.tag.begin.tsx}
- '2': {name: entity.name.tag.tsx}
- '3': {name: support.class.component.tsx}
- '4': {name: punctuation.definition.tag.end.tsx}
+ '2': {name: entity.name.tag.namespace.tsx}
+ '3': {name: punctuation.separator.namespace.tsx}
+ '4': {name: entity.name.tag.tsx}
+ '5': {name: support.class.component.tsx}
+ '6': {name: punctuation.definition.tag.end.tsx}
contentName: meta.jsx.children.tsx
patterns:
- include: '#jsx-children'
@@ -64,16 +68,19 @@ repository:
(?<=[({\[,?=>:*]|&&|\|\||\?|{{lookBehindReturn}}|{{lookBehindDefault}}|^)\s*
(?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
(?=(<)\s*
+ ([_$a-zA-Z][-$\w.]*(?))
- end: (/>)|(?:()\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?))
+ end: (/>)|(?:()\s*(?:([_$a-zA-Z][-$\w.]*)(?))
endCaptures:
'0': { name: meta.tag.tsx }
'1': { name: punctuation.definition.tag.end.tsx }
'2': { name: punctuation.definition.tag.begin.tsx }
- '3': { name: entity.name.tag.tsx }
- '4': { name: support.class.component.tsx }
- '5': { name: punctuation.definition.tag.end.tsx }
+ '3': { name: entity.name.tag.namespace.tsx }
+ '4': { name: punctuation.separator.namespace.tsx }
+ '5': { name: entity.name.tag.tsx }
+ '6': { name: support.class.component.tsx }
+ '7': { name: punctuation.definition.tag.end.tsx }
patterns:
- include: '#jsx-tag'
@@ -82,16 +89,19 @@ repository:
begin: |-
(?x)
(?=(<)\s*
+ ([_$a-zA-Z][-$\w.]*(?))
- end: (/>)|(?:()\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?))
+ end: (/>)|(?:()\s*(?:([_$a-zA-Z][-$\w.]*)(?))
endCaptures:
- '0': { name: meta.tag.tsx }
- '1': { name: punctuation.definition.tag.end.tsx }
- '2': { name: punctuation.definition.tag.begin.tsx }
- '3': { name: entity.name.tag.tsx }
- '4': { name: support.class.component.tsx }
- '5': { name: punctuation.definition.tag.end.tsx }
+ '0': { name: meta.tag.tsx }
+ '1': { name: punctuation.definition.tag.end.tsx }
+ '2': { name: punctuation.definition.tag.begin.tsx }
+ '3': { name: entity.name.tag.namespace.tsx }
+ '4': { name: punctuation.separator.namespace.tsx }
+ '5': { name: entity.name.tag.tsx }
+ '6': { name: support.class.component.tsx }
+ '7': { name: punctuation.definition.tag.end.tsx }
patterns:
- include: '#jsx-tag'
@@ -100,19 +110,23 @@ repository:
begin: |-
(?x)
(?=(<)\s*
+ (?:([_$a-zA-Z][-$\w.]*)(?))
- end: (?=(/>)|(?:()\s*([_$a-zA-Z][-$\w.]*(?)))
+ end: (?=(/>)|(?:()\s*(?:([_$a-zA-Z][-$\w.]*)(?)))
patterns:
- begin: |-
(?x)
(<)\s*
+ (?:([_$a-zA-Z][-$\w.]*)(?)
beginCaptures:
'1': { name: punctuation.definition.tag.begin.tsx }
- '2': { name: entity.name.tag.tsx }
- '3': { name: support.class.component.tsx }
+ '2': { name: entity.name.tag.namespace.tsx }
+ '3': { name: punctuation.separator.namespace.tsx }
+ '4': { name: entity.name.tag.tsx }
+ '5': { name: support.class.component.tsx }
end: (?=[/]?>)
contentName: meta.tag.attributes.tsx
patterns:
@@ -170,10 +184,13 @@ repository:
match: |-
(?x)
\s*
+ (?:([_$a-zA-Z][-$\w.]*)(:))?
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?>|/\*|//)
captures:
- '1': {name: entity.other.attribute-name.tsx}
+ '1': {name: entity.other.attribute-name.namespace.tsx}
+ '2': {name: punctuation.separator.namespace.tsx}
+ '3': {name: entity.other.attribute-name.tsx}
jsx-tag-attribute-assignment:
name: keyword.operator.assignment.tsx
diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage
index 6339e476..2d6ca777 100644
--- a/TypeScriptReact.tmLanguage
+++ b/TypeScriptReact.tmLanguage
@@ -6897,9 +6897,9 @@
begin
(?x)
(?<=[({\[,?=>:*]|&&|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
- (?=(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
+ (?=(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
end
- (?!\s*(<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
+ (?!\s*(<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>))
patterns
@@ -6913,9 +6913,9 @@
name
meta.tag.without-attributes.tsx
begin
- (<)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
+ (<)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
end
- (</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
+ (</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))?\s*(>)
beginCaptures
1
@@ -6926,14 +6926,24 @@
2
name
- entity.name.tag.tsx
+ entity.name.tag.namespace.tsx
3
name
- support.class.component.tsx
+ punctuation.separator.namespace.tsx
4
+
+ name
+ entity.name.tag.tsx
+
+ 5
+
+ name
+ support.class.component.tsx
+
+ 6
name
punctuation.definition.tag.end.tsx
@@ -6949,14 +6959,24 @@
2
name
- entity.name.tag.tsx
+ entity.name.tag.namespace.tsx
3
name
- support.class.component.tsx
+ punctuation.separator.namespace.tsx
4
+
+ name
+ entity.name.tag.tsx
+
+ 5
+
+ name
+ support.class.component.tsx
+
+ 6
name
punctuation.definition.tag.end.tsx
@@ -6979,10 +6999,11 @@
(?<=[({\[,?=>:*]|&&|\|\||\?|^return|[^\._$[:alnum:]]return|^default|[^\._$[:alnum:]]default|^)\s*
(?!<\s*[_$[:alpha:]][_$[:alnum:]]*((\s+extends\s+[^=>])|,)) # look ahead is not type parameter of arrow
(?=(<)\s*
+ ([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end
- (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
+ (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
endCaptures
0
@@ -7003,14 +7024,24 @@
3
name
- entity.name.tag.tsx
+ entity.name.tag.namespace.tsx
4
name
- support.class.component.tsx
+ punctuation.separator.namespace.tsx
5
+
+ name
+ entity.name.tag.tsx
+
+ 6
+
+ name
+ support.class.component.tsx
+
+ 7
name
punctuation.definition.tag.end.tsx
@@ -7029,10 +7060,11 @@
begin
(?x)
(?=(<)\s*
+ ([_$a-zA-Z][-$\w.]*(?<!\.|-):)?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end
- (/>)|(?:(</)\s*((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
+ (/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))\s*(>))
endCaptures
0
@@ -7053,14 +7085,24 @@
3
name
- entity.name.tag.tsx
+ entity.name.tag.namespace.tsx
4
name
- support.class.component.tsx
+ punctuation.separator.namespace.tsx
5
+
+ name
+ entity.name.tag.tsx
+
+ 6
+
+ name
+ support.class.component.tsx
+
+ 7
name
punctuation.definition.tag.end.tsx
@@ -7081,16 +7123,18 @@
begin
(?x)
(?=(<)\s*
+ (?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
([_$a-zA-Z][-$\w.]*(?<!\.|-))
(?=\s+(?!\?)|/?>))
end
- (?=(/>)|(?:(</)\s*([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
+ (?=(/>)|(?:(</)\s*(?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?([_$a-zA-Z][-$\w.]*(?<!\.|-))\s*(>)))
patterns
begin
(?x)
(<)\s*
+ (?:([_$a-zA-Z][-$\w.]*)(?<!\.|-)(:))?
((?:[a-z][a-z0-9]*|([_$a-zA-Z][-$\w.]*))(?<!\.|-))
(?=\s+(?!\?)|/?>)
beginCaptures
@@ -7103,9 +7147,19 @@
2
name
- entity.name.tag.tsx
+ entity.name.tag.namespace.tsx
3
+
+ name
+ punctuation.separator.namespace.tsx
+
+ 4
+
+ name
+ entity.name.tag.tsx
+
+ 5
name
support.class.component.tsx
@@ -7272,11 +7326,22 @@
match
(?x)
\s*
+ (?:([_$a-zA-Z][-$\w.]*)(:))?
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?>|/\*|//)
captures
1
+
+ name
+ entity.other.attribute-name.namespace.tsx
+
+ 2
+
+ name
+ punctuation.separator.namespace.tsx
+
+ 3
name
entity.other.attribute-name.tsx
diff --git a/tests/baselines/pr557_namespacedJsx.baseline.txt b/tests/baselines/pr557_namespacedJsx.baseline.txt
new file mode 100644
index 00000000..7d6ca57d
--- /dev/null
+++ b/tests/baselines/pr557_namespacedJsx.baseline.txt
@@ -0,0 +1,256 @@
+original file
+-----------------------------------
+// @onlyOwnGrammar - As this has jsx
+const valid1 = ;
+
+const valid2 = foo;
+
+const valid3 = ;
+
+const invalid1 = ;
+
+const invalid2 = foo;
+-----------------------------------
+
+Grammar: TypeScriptReact.tmLanguage
+-----------------------------------
+>// @onlyOwnGrammar - As this has jsx
+ ^^
+ source.tsx comment.line.double-slash.tsx punctuation.definition.comment.tsx
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ source.tsx comment.line.double-slash.tsx
+>const valid1 = ;
+ ^^^^^
+ source.tsx meta.var.expr.tsx storage.type.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.definition.variable.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
+ ^^^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.tsx support.class.component.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx
+ ^^^^^^^^^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx entity.other.attribute-name.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx punctuation.definition.string.begin.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx punctuation.definition.string.end.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx
+ ^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
+ ^
+ source.tsx punctuation.terminator.statement.tsx
+>
+ ^
+ source.tsx
+>const valid2 = foo;
+ ^^^^^
+ source.tsx meta.var.expr.tsx storage.type.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.definition.variable.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.namespace.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.separator.namespace.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx entity.other.attribute-name.namespace.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx punctuation.separator.namespace.tsx
+ ^^^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx entity.other.attribute-name.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.jsx.children.tsx
+ ^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.namespace.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.separator.namespace.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
+ ^
+ source.tsx punctuation.terminator.statement.tsx
+>
+ ^
+ source.tsx
+>const valid3 = ;
+ ^^^^^
+ source.tsx meta.var.expr.tsx storage.type.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.definition.variable.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.begin.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.namespace.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.separator.namespace.tsx
+ ^^^^^^^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx entity.name.tag.tsx support.class.component.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx entity.other.attribute-name.namespace.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx punctuation.separator.namespace.tsx
+ ^^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx entity.other.attribute-name.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx punctuation.definition.string.begin.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx string.quoted.double.tsx punctuation.definition.string.end.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.tag.tsx meta.tag.attributes.tsx
+ ^^
+ source.tsx meta.var.expr.tsx meta.tag.tsx punctuation.definition.tag.end.tsx
+ ^
+ source.tsx punctuation.terminator.statement.tsx
+>
+ ^
+ source.tsx
+>const invalid1 = ;
+ ^^^^^
+ source.tsx meta.var.expr.tsx storage.type.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.definition.variable.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.arithmetic.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^
+ source.tsx punctuation.terminator.statement.tsx
+>
+ ^
+ source.tsx
+>const invalid2 = foo;
+ ^^^^^
+ source.tsx meta.var.expr.tsx storage.type.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^^^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx meta.definition.variable.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx meta.var-single-variable.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.assignment.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.arithmetic.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^
+ source.tsx meta.var.expr.tsx variable.other.object.tsx
+ ^
+ source.tsx meta.var.expr.tsx punctuation.accessor.tsx
+ ^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.property.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.arithmetic.tsx
+ ^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.arithmetic.tsx
+ ^^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.readwrite.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.arithmetic.tsx
+ ^
+ source.tsx meta.var.expr.tsx
+ ^^^^^
+ source.tsx meta.var.expr.tsx variable.other.object.tsx
+ ^
+ source.tsx meta.var.expr.tsx punctuation.accessor.tsx
+ ^^^^^^^^^
+ source.tsx meta.var.expr.tsx variable.other.property.tsx
+ ^
+ source.tsx meta.var.expr.tsx keyword.operator.relational.tsx
+ ^
+ source.tsx punctuation.terminator.statement.tsx
\ No newline at end of file
diff --git a/tests/cases/pr557_namespacedJsx.tsx b/tests/cases/pr557_namespacedJsx.tsx
new file mode 100644
index 00000000..69d1dacd
--- /dev/null
+++ b/tests/cases/pr557_namespacedJsx.tsx
@@ -0,0 +1,10 @@
+// @onlyOwnGrammar - As this has jsx
+const valid1 = ;
+
+const valid2 = foo;
+
+const valid3 = ;
+
+const invalid1 = ;
+
+const invalid2 = foo;
\ No newline at end of file