diff --git a/extensions/javascript/syntaxes/JavaScript.tmLanguage b/extensions/javascript/syntaxes/JavaScript.tmLanguage
index 89987b89ef3..af9b89bfa38 100644
--- a/extensions/javascript/syntaxes/JavaScript.tmLanguage
+++ b/extensions/javascript/syntaxes/JavaScript.tmLanguage
@@ -70,6 +70,13 @@
name
keyword.operator.assignment.js
+ await-modifier
+
+ match
+ await
+ name
+ storage.modifier.js
+
block
begin
@@ -98,11 +105,11 @@
include
- #expression
+ #object-member
include
- #object-member
+ #expression
@@ -116,7 +123,7 @@
cast
begin
- (?:(?<=return|throw|yield|[=(,:>]))\s*(<)(?!<?\=)
+ (?:(?<=return|throw|yield|await|[=(,:>]))\s*(<)(?!<?\=)
beginCaptures
1
@@ -380,7 +387,7 @@
field-declaration
begin
- (?<!\()\s*\b([a-zA-Z_$][\w$]*)\s*(\?\s*)?(?=(=|:))
+ (?<!\()\s*((?:\b[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\"))\s*(\?\s*)?(?=(=|:))
beginCaptures
1
@@ -432,6 +439,10 @@
functioncall.expr.js
patterns
+
+ include
+ #await-modifier
+
include
#type-parameters
@@ -445,7 +456,7 @@
function-declaration
begin
- \b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
+ \b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
beginCaptures
1
@@ -456,9 +467,14 @@
2
name
- storage.type.function.js
+ storage.modifier.js
3
+
+ name
+ storage.type.function.js
+
+ 4
name
entity.name.function.js
@@ -667,7 +683,7 @@
method-declaration
begin
- \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)
+ \b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)
beginCaptures
1
@@ -683,19 +699,24 @@
3
name
- storage.type.property.js
+ storage.modifier.js
4
name
- keyword.operator.js
+ storage.type.property.js
5
name
- entity.name.function.js
+ keyword.operator.js
6
+
+ name
+ entity.name.function.js
+
+ 7
name
keyword.operator.js
diff --git a/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage b/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage
index 8331a9176a2..c29607cd6ab 100644
--- a/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage
+++ b/extensions/javascript/syntaxes/JavaScriptReact.tmLanguage
@@ -22,14 +22,14 @@
match
\b(public|protected|private)\b
name
- storage.modifier.tsx
+ storage.modifier.jsx
arithmetic-operator
match
\*|/|\-\-|\-|\+\+|\+|%
name
- keyword.operator.arithmetic.tsx
+ keyword.operator.arithmetic.jsx
array-literal
@@ -40,7 +40,7 @@
0
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
end
@@ -50,11 +50,11 @@
0
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
name
- meta.array.literal.tsx
+ meta.array.literal.jsx
patterns
@@ -68,7 +68,7 @@
match
<<=|>>=|>>>=|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=
name
- keyword.operator.assignment.tsx
+ keyword.operator.assignment.jsx
block
@@ -79,7 +79,7 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
end
@@ -89,20 +89,20 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
name
- meta.block.tsx
+ meta.block.jsx
patterns
include
- #expression
+ #object-member
include
- #object-member
+ #expression
@@ -111,12 +111,12 @@
match
\b(false|true)\b
name
- constant.language.boolean.tsx
+ constant.language.boolean.jsx
comment
name
- comment.tsx
+ comment.jsx
patterns
@@ -140,7 +140,7 @@
end
\*/
name
- comment.block.tsx
+ comment.block.jsx
comment-block-doc
@@ -149,21 +149,21 @@
end
\*/
name
- comment.block.documentation.tsx
+ comment.block.documentation.jsx
comment-line
match
(//).*$\n?
name
- comment.line.tsx
+ comment.line.jsx
control-statement
match
(?<!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|switch|case)\b
name
- keyword.control.tsx
+ keyword.control.jsx
decl-block
@@ -174,7 +174,7 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
end
@@ -184,11 +184,11 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
name
- meta.decl.block.tsx
+ meta.decl.block.jsx
patterns
@@ -200,7 +200,7 @@
declaration
name
- meta.declaration.tsx
+ meta.declaration.jsx
patterns
@@ -228,28 +228,28 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- storage.type.tsx
+ storage.type.jsx
3
name
- entity.name.class.tsx
+ entity.name.class.jsx
match
(?:\b(const)\s+)?\b(enum)\s+([a-zA-Z_$][\w$]*)
name
- meta.enum.declaration.tsx
+ meta.enum.declaration.jsx
expression
name
- meta.expression.tsx
+ meta.expression.jsx
patterns
@@ -343,29 +343,29 @@
match
=>|\b(delete|export|import|in|instanceof|module|namespace|new|typeof|void|as)\b
name
- keyword.operator.tsx
+ keyword.operator.jsx
field-declaration
begin
- (?<!\()\s*\b([a-zA-Z_$][\w$]*)\s*(\?\s*)?(?=(=|:))
+ (?<!\()\s*((?:\b[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\"))\s*(\?\s*)?(?=(=|:))
beginCaptures
1
name
- variable.tsx
+ variable.jsx
2
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
(?=\}|;|,)|(?<=\})
name
- meta.field.declaration.tsx
+ meta.field.declaration.jsx
patterns
@@ -381,23 +381,23 @@
1
name
- storage.type.tsx
+ storage.type.jsx
3
name
- keyword.operator.tsx
+ keyword.operator.jsx
match
(?<=\()\s*\b(var|let|const)\s+([a-zA-Z_$][\w$]*)\s+(in|of)\b
name
- forin.expr.tsx
+ forin.expr.jsx
function-call
name
- functioncall.expr.tsx
+ functioncall.expr.jsx
patterns
@@ -419,23 +419,23 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- storage.type.function.tsx
+ storage.type.function.jsx
3
name
- entity.name.function.tsx
+ entity.name.function.jsx
end
(?=;|\})|(?<=\})
name
- meta.function.tsx
+ meta.function.jsx
patterns
@@ -471,23 +471,23 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- storage.type.function.tsx
+ storage.type.function.jsx
3
name
- entity.name.function.tsx
+ entity.name.function.jsx
match
\b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*
name
- meta.function.overload.tsx
+ meta.function.overload.jsx
function-type-parameters
@@ -498,7 +498,7 @@
0
name
- meta.brace.round.tsx
+ meta.brace.round.jsx
end
@@ -508,11 +508,11 @@
0
name
- meta.brace.round.tsx
+ meta.brace.round.jsx
name
- meta.function.type.parameter.tsx
+ meta.function.type.parameter.jsx
patterns
@@ -542,7 +542,7 @@
0
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
end
@@ -552,16 +552,16 @@
1
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
2
name
- keyword.operator.tsx
+ keyword.operator.jsx
name
- meta.indexer.declaration.tsx
+ meta.indexer.declaration.jsx
patterns
@@ -585,18 +585,18 @@
1
name
- variable.parameter.tsx
+ variable.parameter.jsx
match
([a-zA-Z_$][\w$]*)(?=\:)
name
- meta.indexer.parameter.tsx
+ meta.indexer.parameter.jsx
jsx
name
- meta.jsx.tsx
+ meta.jsx.jsx
patterns
@@ -621,7 +621,7 @@
end
(?=</)
name
- meta.jsx.children.tsx
+ meta.jsx.children.jsx
patterns
@@ -672,24 +672,24 @@
1
name
- punctuation.definition.entity.tsx
+ punctuation.definition.entity.jsx
3
name
- punctuation.definition.entity.tsx
+ punctuation.definition.entity.jsx
match
(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)
name
- constant.character.entity.tsx
+ constant.character.entity.jsx
match
&
name
- invalid.illegal.bad-ampersand.tsx
+ invalid.illegal.bad-ampersand.jsx
@@ -702,7 +702,7 @@
0
name
- punctuation.definition.brace.curly.start.tsx
+ punctuation.definition.brace.curly.start.jsx
end
@@ -712,11 +712,11 @@
0
name
- punctuation.definition.brace.curly.end.tsx
+ punctuation.definition.brace.curly.end.jsx
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
patterns
@@ -734,7 +734,7 @@
0
name
- punctuation.definition.string.begin.tsx
+ punctuation.definition.string.begin.jsx
end
@@ -744,11 +744,11 @@
0
name
- punctuation.definition.string.end.tsx
+ punctuation.definition.string.end.jsx
name
- string.quoted.double.tsx
+ string.quoted.double.jsx
patterns
@@ -766,7 +766,7 @@
0
name
- punctuation.definition.string.begin.tsx
+ punctuation.definition.string.begin.jsx
end
@@ -776,11 +776,11 @@
0
name
- punctuation.definition.string.end.tsx
+ punctuation.definition.string.end.jsx
name
- string.quoted.single.tsx
+ string.quoted.single.jsx
patterns
@@ -794,7 +794,7 @@
match
=(?=\s*(?:'|"|{|/\*|//|\n))
name
- keyword.operator.assignment.tsx
+ keyword.operator.assignment.jsx
jsx-tag-attribute-name
@@ -803,7 +803,7 @@
1
name
- entity.other.attribute-name.tsx
+ entity.other.attribute-name.jsx
match
@@ -812,7 +812,7 @@
([_$a-zA-Z][-$\w]*)
(?=\s|=|/?>|/\*|//)
name
- meta.tag.attribute-name.tsx
+ meta.tag.attribute-name.jsx
jsx-tag-attributes
@@ -845,7 +845,7 @@
match
\S+
name
- invalid.illegal.attribute.tsx
+ invalid.illegal.attribute.jsx
jsx-tag-close
@@ -856,12 +856,12 @@
1
name
- punctuation.definition.tag.begin.tsx
+ punctuation.definition.tag.begin.jsx
2
name
- entity.name.tag.tsx
+ entity.name.tag.jsx
end
@@ -871,11 +871,11 @@
1
name
- punctuation.definition.tag.end.tsx
+ punctuation.definition.tag.end.jsx
name
- tag.close.tsx
+ tag.close.jsx
patterns
@@ -889,7 +889,7 @@
match
<\s*>
name
- invalid.illegal.tag.incomplete.tsx
+ invalid.illegal.tag.incomplete.jsx
jsx-tag-open
@@ -903,12 +903,12 @@
1
name
- punctuation.definition.tag.begin.tsx
+ punctuation.definition.tag.begin.jsx
2
name
- entity.name.tag.tsx
+ entity.name.tag.jsx
end
@@ -918,11 +918,11 @@
1
name
- punctuation.definition.tag.end.tsx
+ punctuation.definition.tag.end.jsx
name
- tag.open.tsx
+ tag.open.jsx
patterns
@@ -948,17 +948,17 @@
1
name
- punctuation.definition.tag.begin.tsx
+ punctuation.definition.tag.begin.jsx
2
name
- entity.name.tag.tsx
+ entity.name.tag.jsx
3
name
- punctuation.definition.tag.end.tsx
+ punctuation.definition.tag.end.jsx
end
@@ -968,21 +968,21 @@
1
name
- punctuation.definition.tag.begin.tsx
+ punctuation.definition.tag.begin.jsx
2
name
- entity.name.tag.tsx
+ entity.name.tag.jsx
3
name
- punctuation.definition.tag.end.tsx
+ punctuation.definition.tag.end.jsx
name
- tag.without-attributes.tsx
+ tag.without-attributes.jsx
patterns
@@ -994,7 +994,7 @@
literal
name
- literal.tsx
+ literal.jsx
patterns
@@ -1028,7 +1028,7 @@
match
\!|&|~|\||&&|\|\|
name
- keyword.operator.arithmetic.tsx
+ keyword.operator.arithmetic.jsx
method-declaration
@@ -1039,38 +1039,38 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- storage.modifier.tsx
+ storage.modifier.jsx
3
name
- storage.type.property.tsx
+ storage.type.property.jsx
4
name
- keyword.operator.tsx
+ keyword.operator.jsx
5
name
- entity.name.function.tsx
+ entity.name.function.jsx
6
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
(?=\}|;|,)|(?<=\})
name
- meta.method.declaration.tsx
+ meta.method.declaration.jsx
patterns
@@ -1106,28 +1106,28 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- keyword.operator.tsx
+ keyword.operator.jsx
3
name
- entity.name.function.tsx
+ entity.name.function.jsx
4
name
- keyword.operator.tsx
+ keyword.operator.jsx
match
\b(?:(public|private|protected)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\<)
name
- meta.method.overload.declaration.tsx
+ meta.method.overload.declaration.jsx
new-expr
@@ -1138,13 +1138,13 @@
1
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
(?=[(;]|$)
name
- new.expr.tsx
+ new.expr.jsx
patterns
@@ -1158,14 +1158,14 @@
match
\b(null)\b
name
- constant.language.null.tsx
+ constant.language.null.jsx
numeric-literal
match
\b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b
name
- constant.numeric.tsx
+ constant.numeric.jsx
object-body
@@ -1176,7 +1176,7 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
end
@@ -1186,11 +1186,11 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
name
- meta.object.body.tsx
+ meta.object.body.jsx
patterns
@@ -1244,17 +1244,17 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- storage.modifier.tsx
+ storage.modifier.jsx
3
name
- storage.type.tsx
+ storage.type.jsx
end
@@ -1264,11 +1264,11 @@
1
name
- brace.curly.tsx
+ brace.curly.jsx
name
- meta.declaration.object.tsx
+ meta.declaration.object.jsx
patterns
@@ -1302,7 +1302,7 @@
1
name
- keyword.other.tsx
+ keyword.other.jsx
end
@@ -1312,11 +1312,11 @@
1
name
- brace.curly.tsx
+ brace.curly.jsx
name
- meta.object.heritage.tsx
+ meta.object.heritage.jsx
patterns
@@ -1340,13 +1340,13 @@
1
name
- storage.type.tsx
+ storage.type.jsx
match
(?:\s*([a-zA-Z_$][\w$]*))
name
- meta.object.heritage.parent.tsx
+ meta.object.heritage.parent.jsx
object-member
@@ -1355,7 +1355,7 @@
end
(?=,|\})
name
- meta.object.member.tsx
+ meta.object.member.jsx
patterns
@@ -1371,13 +1371,13 @@
0
name
- entity.name.class.tsx
+ entity.name.class.jsx
match
[a-zA-Z_$][\w$]*
name
- meta.object.name.tsx
+ meta.object.name.jsx
parameter-name
@@ -1386,28 +1386,28 @@
1
name
- storage.modifier.tsx
+ storage.modifier.jsx
2
name
- keyword.operator.tsx
+ keyword.operator.jsx
3
name
- variable.parameter.tsx
+ variable.parameter.jsx
4
name
- keyword.operator.tsx
+ keyword.operator.jsx
match
(?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*([a-zA-Z_$][\w$]*)\s*(\??)
name
- parameter.name.tsx
+ parameter.name.jsx
paren-expression
@@ -1418,7 +1418,7 @@
0
name
- meta.brace.paren.tsx
+ meta.brace.paren.jsx
end
@@ -1428,7 +1428,7 @@
0
name
- meta.brace.paren.tsx
+ meta.brace.paren.jsx
patterns
@@ -1444,7 +1444,7 @@
match
\b(get|set)\b
name
- storage.type.property.tsx
+ storage.type.property.jsx
qstring-double
@@ -1453,7 +1453,7 @@
end
"|(?=$)
name
- string.double.tsx
+ string.double.jsx
patterns
@@ -1469,7 +1469,7 @@
end
'|(?=$)
name
- string.single.tsx
+ string.single.jsx
patterns
@@ -1485,20 +1485,20 @@
end
$|(/)[igm]*
name
- string.regex.tsx
+ string.regex.jsx
patterns
match
\\.
name
- constant.character.escape.tsx
+ constant.character.escape.jsx
match
\[(\\\]|[^\]])*\]
name
- constant.character.class.tsx
+ constant.character.class.jsx
@@ -1507,7 +1507,7 @@
match
===|==|=|!=|!==|<=|>=|<>|<|>
name
- keyword.operator.comparison.tsx
+ keyword.operator.comparison.jsx
return-type
@@ -1516,7 +1516,7 @@
end
(?=$)|(?=\{|;|//)
name
- meta.return.type.tsx
+ meta.return.type.jsx
patterns
@@ -1530,19 +1530,19 @@
match
\b(static)\b
name
- keyword.other.tsx
+ keyword.other.jsx
storage-keyword
match
\b(number|boolean|string|any|var|let|function|const)\b
name
- storage.type.tsx
+ storage.type.jsx
string
name
- string.tsx
+ string.jsx
patterns
@@ -1571,13 +1571,13 @@
1
name
- keyword.control.tsx
+ keyword.control.jsx
end
:
name
- case.expr.tsx
+ case.expr.jsx
patterns
@@ -1595,7 +1595,7 @@
0
name
- string.template.tsx
+ string.template.jsx
end
@@ -1605,11 +1605,11 @@
0
name
- string.template.tsx
+ string.template.jsx
name
- meta.template.tsx
+ meta.template.jsx
patterns
@@ -1629,7 +1629,7 @@
end
(?=(\$\{|`))
name
- string.template.tsx
+ string.template.jsx
patterns
@@ -1647,7 +1647,7 @@
0
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
@@ -1657,11 +1657,11 @@
0
name
- keyword.operator.tsx
+ keyword.operator.jsx
name
- template.element.tsx
+ template.element.jsx
patterns
@@ -1675,12 +1675,12 @@
match
\b(this)\b
name
- constant.language.this.tsx
+ constant.language.this.jsx
type
name
- meta.type.tsx
+ meta.type.jsx
patterns
@@ -1724,7 +1724,7 @@
end
(?=$|[,);\}\]]|//)|(?==[^>])|(?<=[\}>\]\)]|[a-zA-Z_$])\s*(?=\{)
name
- meta.type.annotation.tsx
+ meta.type.annotation.jsx
patterns
@@ -1750,18 +1750,18 @@
1
name
- keyword.other.tsx
+ keyword.other.jsx
2
name
- storage.type.tsx
+ storage.type.jsx
end
(?=[,);>]|var|type|function|class|interface)
name
- meta.type.declaration.tsx
+ meta.type.declaration.jsx
patterns
@@ -1779,13 +1779,13 @@
0
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
(?=\s*[,\)\{=;>]|//|$)
name
- meta.type.function.return.tsx
+ meta.type.function.return.jsx
patterns
@@ -1801,13 +1801,13 @@
1
name
- entity.name.type.tsx
+ entity.name.type.jsx
match
[a-zA-Z_$][.\w$]*
name
- meta.type.name.tsx
+ meta.type.name.jsx
type-object
@@ -1818,7 +1818,7 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
end
@@ -1828,11 +1828,11 @@
0
name
- meta.brace.curly.tsx
+ meta.brace.curly.jsx
name
- meta.object.type.tsx
+ meta.object.type.jsx
patterns
@@ -1862,7 +1862,7 @@
match
[.|]
name
- keyword.operator.type.tsx
+ keyword.operator.type.jsx
type-parameters
@@ -1873,12 +1873,12 @@
1
name
- entity.name.type.tsx
+ entity.name.type.jsx
2
name
- meta.brace.angle.tsx
+ meta.brace.angle.jsx
end
@@ -1888,18 +1888,18 @@
2
name
- meta.brace.angle.tsx
+ meta.brace.angle.jsx
name
- meta.type.parameters.tsx
+ meta.type.parameters.jsx
patterns
match
\b(extends)\b
name
- keyword.other.tsx
+ keyword.other.jsx
include
@@ -1920,13 +1920,13 @@
1
name
- keyword.control.tsx
+ keyword.control.jsx
end
\)
name
- meta.type.paren.cover.tsx
+ meta.type.paren.cover.jsx
patterns
@@ -1950,13 +1950,13 @@
1
name
- storage.type.tsx
+ storage.type.jsx
match
\b(string|number|boolean|symbol|any|void)\b
name
- meta.type.primitive.tsx
+ meta.type.primitive.jsx
type-tuple
@@ -1967,7 +1967,7 @@
0
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
end
@@ -1977,11 +1977,11 @@
0
name
- meta.brace.square.tsx
+ meta.brace.square.jsx
name
- meta.type.tuple.tsx
+ meta.type.tuple.jsx
patterns
@@ -1999,7 +1999,7 @@
match
\b(undefined)\b
name
- constant.language.tsx
+ constant.language.jsx
var-expr
@@ -2010,18 +2010,18 @@
1
name
- storage.type.tsx
+ storage.type.jsx
2
name
- variable.tsx
+ variable.jsx
end
(?=$|[;=\}\{])|(?<=\})
name
- meta.var.expr.tsx
+ meta.var.expr.jsx
patterns
@@ -2047,7 +2047,7 @@
1
name
- keyword.operator.tsx
+ keyword.operator.jsx
end
@@ -2067,3 +2067,4 @@
805375ec-d614-41f5-8993-5843fe63ea82
+