diff --git a/src/services/code-index/__tests__/dotnet-support.spec.ts b/src/services/code-index/__tests__/dotnet-support.spec.ts new file mode 100644 index 00000000000..ac0f217b66b --- /dev/null +++ b/src/services/code-index/__tests__/dotnet-support.spec.ts @@ -0,0 +1,32 @@ +// npx vitest services/code-index/__tests__/dotnet-support.spec.ts + +import { extensions } from "../../tree-sitter" +import { scannerExtensions } from "../shared/supported-extensions" + +describe(".NET file extension support", () => { + it("should include C# files in supported extensions", () => { + expect(extensions).toContain(".cs") + expect(scannerExtensions).toContain(".cs") + }) + + it("should include Visual Basic .NET files in supported extensions", () => { + expect(extensions).toContain(".vb") + expect(scannerExtensions).toContain(".vb") + }) + + it("should include F# files in supported extensions", () => { + expect(extensions).toContain(".fs") + expect(extensions).toContain(".fsx") + expect(extensions).toContain(".fsi") + expect(scannerExtensions).toContain(".fs") + expect(scannerExtensions).toContain(".fsx") + expect(scannerExtensions).toContain(".fsi") + }) + + it("should not include markdown files in scanner extensions", () => { + expect(extensions).toContain(".md") + expect(extensions).toContain(".markdown") + expect(scannerExtensions).not.toContain(".md") + expect(scannerExtensions).not.toContain(".markdown") + }) +}) diff --git a/src/services/tree-sitter/index.ts b/src/services/tree-sitter/index.ts index c0813e65099..24a7b60fdfd 100644 --- a/src/services/tree-sitter/index.ts +++ b/src/services/tree-sitter/index.ts @@ -46,6 +46,12 @@ const extensions = [ "hpp", // C# "cs", + // Visual Basic .NET + "vb", + // F# + "fs", + "fsx", + "fsi", // Ruby "rb", "java", diff --git a/src/services/tree-sitter/languageParser.ts b/src/services/tree-sitter/languageParser.ts index a8ac0a9ead9..41f52b19f41 100644 --- a/src/services/tree-sitter/languageParser.ts +++ b/src/services/tree-sitter/languageParser.ts @@ -137,6 +137,18 @@ export async function loadRequiredLanguageParsers(filesToParse: string[], source language = await loadLanguage("c_sharp", sourceDirectory) query = new Query(language, csharpQuery) break + case "vb": + // Visual Basic .NET - use C# parser as fallback since VB.NET has similar structure + language = await loadLanguage("c_sharp", sourceDirectory) + query = new Query(language, csharpQuery) + break + case "fs": + case "fsx": + case "fsi": + // F# - use OCaml parser since F# is based on OCaml + language = await loadLanguage("ocaml", sourceDirectory) + query = new Query(language, ocamlQuery) + break case "rb": language = await loadLanguage("ruby", sourceDirectory) query = new Query(language, rubyQuery)