internal/lsp/protocol/typescript: code for latest 3.16 LSP

Typescript code to generate internal/lsp/protocol/ts*.go for
the latest 3.16 version of the language server protocol.

Change-Id: Ie5bb0f44ffb83c69e30578a36d057820e55fee76
Reviewed-on: https://go-review.googlesource.com/c/tools/+/265579
Run-TryBot: Peter Weinberger <pjw@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Peter Weinberger <pjw@google.com>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
This commit is contained in:
Peter Weinbergr 2020-10-27 14:25:28 -04:00 committed by Peter Weinberger
parent 8cd080b735
commit eafbe7b904
2 changed files with 12 additions and 14 deletions

View File

@ -185,9 +185,7 @@ function strData(d: Data): string {
const f = function (na: ts.NodeArray<any>): number {
return na.length
};
return `D(${d.name}) g;${f(d.generics)} a:${f(d.as)} p:${f(d.properties)} s:${
f(d.statements)} e:${f(d.enums)} m:${f(d.members)} ${
d.alias != undefined}`
return `D(${d.name}) g;${f(d.generics)} a:${f(d.as)} p:${f(d.properties)} s:${f(d.statements)} e:${f(d.enums)} m:${f(d.members)} ${d.alias != undefined}`
}
let data = new Map<string, Data>(); // parsed data types
@ -401,6 +399,7 @@ function underlying(n: ts.Node, f: (n: ts.Node) => void) {
n.kind == ts.SyntaxKind.StringKeyword ||
n.kind == ts.SyntaxKind.NumberKeyword ||
n.kind == ts.SyntaxKind.AnyKeyword ||
n.kind == ts.SyntaxKind.UnknownKeyword ||
n.kind == ts.SyntaxKind.NullKeyword ||
n.kind == ts.SyntaxKind.BooleanKeyword ||
n.kind == ts.SyntaxKind.ObjectKeyword ||
@ -433,7 +432,7 @@ function underlying(n: ts.Node, f: (n: ts.Node) => void) {
if (ts.isStringLiteral(n.initializer)) return;
throw new Error(`EnumMember ${strKind(n.initializer)} ${n.name.getText()}`)
} else {
throw new Error(`saw ${strKind(n)} in underlying. ${n.getText()}`)
throw new Error(`saw ${strKind(n)} in underlying. ${n.getText()} at ${loc(n)}`)
}
}
@ -532,7 +531,7 @@ function goInterface(d: Data, nm: string) {
gt = '*' + gt;
};
})
ans = ans.concat(`${goName(n.name.getText())} ${gt}`, json, '\n')
ans = ans.concat(`${goName(n.name.getText())} ${gt}`, json, '\n');
};
d.properties.forEach(g)
// heritage clauses become embedded types
@ -607,8 +606,7 @@ function goEnum(d: Data, nm: string) {
function goTypeAlias(d: Data, nm: string) {
if (d.as.length != 0 || d.generics.length != 0) {
if (nm != 'ServerCapabilities')
throw new Error(`${nm} has extra fields(${d.as.length},${
d.generics.length}) ${d.me.getText()}`);
throw new Error(`${nm} has extra fields(${d.as.length},${d.generics.length}) ${d.me.getText()}`);
}
typesOut.push(getComments(d.me))
// d.alias doesn't seem to have comments
@ -631,7 +629,7 @@ function goType(n: ts.TypeNode, nm: string, parent?: string): string {
return 'float64';
} else if (strKind(n) == 'BooleanKeyword') {
return 'bool';
} else if (strKind(n) == 'AnyKeyword') {
} else if (strKind(n) == 'AnyKeyword' || strKind(n) == 'UnknownKeyword') {
return 'interface{}';
} else if (strKind(n) == 'NullKeyword') {
return 'nil'
@ -669,9 +667,9 @@ function goUnionType(n: ts.UnionTypeNode, nm: string, parent?: string): string {
// range?: boolean | {\n };
// full?: boolean | {\n /**\n * The server supports deltas for full documents.\n */\n delta?: boolean;\n }
// These are handled specially:
if (parent == 'SemanticTokensOptions') {
if (nm == 'range') help = help.replace(/\n/, '');
if (nm == 'full') help = '/*boolean | <elided struct>*/';
if (nm == 'range') help = help.replace(/\n/, '');
if (nm == 'full' && help.indexOf('\n') != -1) {
help = '/*boolean | <elided struct>*/';
}
// handle all the special cases
switch (n.types.length) {
@ -693,6 +691,7 @@ function goUnionType(n: ts.UnionTypeNode, nm: string, parent?: string): string {
if (a == 'BooleanKeyword') { // usually want bool
if (nm == 'codeActionProvider') return `interface{} ${help}`;
if (nm == 'renameProvider') return `interface{} ${help}`;
if (nm == 'full') return `interface{} ${help}`; // there's a struct
if (nm == 'save') return `${goType(n.types[1], '680')} ${help}`;
return `${goType(n.types[0], 'b')} ${help}`
}
@ -1003,8 +1002,7 @@ function goReq(side: side, m: string) {
const p2 = a == '' ? 'nil' : 'params';
const returnType = indirect(b) ? `*${b}` : b;
callBody = `var result ${returnType}
if err := Call(ctx, s.Conn, "${m}", ${
p2}, &result); err != nil {
if err := Call(ctx, s.Conn, "${m}", ${p2}, &result); err != nil {
return nil, err
}
return result, nil

View File

@ -14,7 +14,7 @@ export const fnames = [
`${dir}/${srcDir}/protocol/src/browser/main.ts`, `${dir}${srcDir}/types/src/main.ts`,
`${dir}${srcDir}/jsonrpc/src/node/main.ts`
];
export const gitHash = '60a5a7825e6f54f57917091f394fd8db7d1724bc'
export const gitHash = '901fd40345060d159f07d234bbc967966a929a34'
let outFname = 'tsprotocol.go';
let fda: number, fdb: number, fde: number; // file descriptors