Skip to content
Snippets Groups Projects
Commit 974b698f authored by Marijn Haverbeke's avatar Marijn Haverbeke
Browse files

[javascript mode] Support typescript-style type params to new

Closes #4887
parent 4b0ae027
No related branches found
No related tags found
No related merge requests found
...@@ -468,6 +468,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) { ...@@ -468,6 +468,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
function maybeTarget(noComma) { function maybeTarget(noComma) {
return function(type) { return function(type) {
if (type == ".") return cont(noComma ? targetNoComma : target); if (type == ".") return cont(noComma ? targetNoComma : target);
else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)
else return pass(noComma ? expressionNoComma : expression); else return pass(noComma ? expressionNoComma : expression);
}; };
} }
...@@ -588,6 +589,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) { ...@@ -588,6 +589,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
if (type == "[") return cont(expect("]"), afterType) if (type == "[") return cont(expect("]"), afterType)
if (value == "extends") return cont(typeexpr) if (value == "extends") return cont(typeexpr)
} }
function maybeTypeArgs(_, value) {
if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
}
function vardef() { function vardef() {
return pass(pattern, maybetype, maybeAssign, vardefCont); return pass(pattern, maybetype, maybeAssign, vardefCont);
} }
......
...@@ -343,6 +343,9 @@ ...@@ -343,6 +343,9 @@
"[keyword function] [def x][operator <][type T] [keyword extends] [keyword keyof] [type X][operator >]([def a]: [type T]) {", "[keyword function] [def x][operator <][type T] [keyword extends] [keyword keyof] [type X][operator >]([def a]: [type T]) {",
" [keyword return]") " [keyword return]")
TS("typescript_new_typeargs",
"[keyword let] [def x] [operator =] [keyword new] [variable Map][operator <][type string], [type Date][operator >]([string-2 `foo${][variable bar][string-2 }`])")
var jsonld_mode = CodeMirror.getMode( var jsonld_mode = CodeMirror.getMode(
{indentUnit: 2}, {indentUnit: 2},
{name: "javascript", jsonld: true} {name: "javascript", jsonld: true}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment