From a3866331f56df28240ea70302e0f9a8320ae493b Mon Sep 17 00:00:00 2001 From: SooHoon Choi Date: Tue, 23 Jul 2024 17:05:47 -0700 Subject: [PATCH] added v1 kind and display_name support for SymbolInformation --- src/FileIndexer.ts | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/FileIndexer.ts b/src/FileIndexer.ts index 3b7f0acb..fdbbf0d1 100644 --- a/src/FileIndexer.ts +++ b/src/FileIndexer.ts @@ -82,6 +82,8 @@ export class FileIndexer { new scip.scip.SymbolInformation({ symbol: symbol.value, documentation: ['```ts\nmodule "' + moduleName + '"\n```'], + kind: scip.scip.SymbolInformation.Kind.Module, + display_name: moduleName, }) ) } @@ -320,6 +322,8 @@ export class FileIndexer { symbol: symbol.value, documentation, relationships: this.relationships(declaration, symbol), + kind: symbolInformationKind(sym), + display_name: sym.getName(), }) ) } @@ -810,6 +814,67 @@ function scriptElementKind( return ts.ScriptElementKind.unknown } +function symbolInformationKind( + sym: ts.Symbol +): scip.scip.SymbolInformation.Kind { + const flags = sym.getFlags() + if (flags & ts.SymbolFlags.Class) { + return scip.scip.SymbolInformation.Kind.Class + } + if (flags & ts.SymbolFlags.Interface) { + return scip.scip.SymbolInformation.Kind.Interface + } + if (flags & ts.SymbolFlags.Enum) { + return scip.scip.SymbolInformation.Kind.Enum + } + if (flags & ts.SymbolFlags.EnumMember) { + return scip.scip.SymbolInformation.Kind.EnumMember + } + if (flags & ts.SymbolFlags.TypeAlias) { + return scip.scip.SymbolInformation.Kind.TypeAlias + } + if (flags & ts.SymbolFlags.TypeParameter) { + return scip.scip.SymbolInformation.Kind.TypeParameter + } + if (flags & ts.SymbolFlags.Function) { + return scip.scip.SymbolInformation.Kind.Function + } + if (flags & ts.SymbolFlags.Method) { + return scip.scip.SymbolInformation.Kind.Method + } + if (flags & ts.SymbolFlags.Constructor) { + return scip.scip.SymbolInformation.Kind.Constructor + } + if (flags & ts.SymbolFlags.GetAccessor) { + return scip.scip.SymbolInformation.Kind.Getter + } + if (flags & ts.SymbolFlags.SetAccessor) { + return scip.scip.SymbolInformation.Kind.Setter + } + if (flags & ts.SymbolFlags.Property) { + return scip.scip.SymbolInformation.Kind.Property + } + if (flags & ts.SymbolFlags.Variable) { + return scip.scip.SymbolInformation.Kind.Variable + } + if (flags & ts.SymbolFlags.Module) { + if (flags & ts.SymbolFlags.NamespaceModule) { + return scip.scip.SymbolInformation.Kind.Namespace + } + return scip.scip.SymbolInformation.Kind.Module + } + if (flags & ts.SymbolFlags.Signature) { + return scip.scip.SymbolInformation.Kind.Signature + } + if (flags & ts.SymbolFlags.TypeLiteral) { + return scip.scip.SymbolInformation.Kind.Type + } + if (flags & ts.SymbolFlags.ObjectLiteral) { + return scip.scip.SymbolInformation.Kind.Object + } + return scip.scip.SymbolInformation.Kind.UnspecifiedKind +} + function isEqualOccurrence( a: scip.scip.Occurrence, b: scip.scip.Occurrence