Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/platform/parser/node/treeSitterLanguages.ts
13401 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
/**
7
* Languages we can parse using tree-sitter. Each enum member corresponds to a tree-sitter parser.
8
*/
9
export enum WASMLanguage {
10
Python = 'python',
11
JavaScript = 'javascript', // Also includes jsx support
12
TypeScript = 'typescript',
13
TypeScriptTsx = 'tsx',
14
Go = 'go',
15
Ruby = 'ruby',
16
Csharp = 'csharp',
17
Cpp = 'cpp',
18
Java = 'java',
19
Rust = 'rust',
20
}
21
22
export class TreeSitterUnknownLanguageError extends Error {
23
constructor(language: string) {
24
super(`Unrecognized language: ${language}`);
25
}
26
}
27
28
const languageIdToWasmLanguageMapping: { [language: string]: WASMLanguage } = {
29
python: WASMLanguage.Python,
30
javascript: WASMLanguage.JavaScript,
31
javascriptreact: WASMLanguage.JavaScript,
32
jsx: WASMLanguage.JavaScript,
33
typescript: WASMLanguage.TypeScript,
34
typescriptreact: WASMLanguage.TypeScriptTsx,
35
tsx: WASMLanguage.TypeScriptTsx,
36
go: WASMLanguage.Go,
37
ruby: WASMLanguage.Ruby,
38
csharp: WASMLanguage.Csharp,
39
cpp: WASMLanguage.Cpp,
40
java: WASMLanguage.Java,
41
rust: WASMLanguage.Rust,
42
};
43
44
/**
45
* @returns a {@link WASMLanguage} if can convert the language ID (from VS Code); otherwise, returns `undefined`.
46
*/
47
export function getWasmLanguage(languageId: string): WASMLanguage | undefined {
48
if (languageId in languageIdToWasmLanguageMapping) {
49
return languageIdToWasmLanguageMapping[languageId];
50
}
51
}
52
53