mirror of https://github.com/golang/go.git
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:
parent
8cd080b735
commit
eafbe7b904
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue