diff options
author | bscan <10503608+bscan@users.noreply.github.com> | 2023-10-16 21:57:03 -0400 |
---|---|---|
committer | bscan <10503608+bscan@users.noreply.github.com> | 2023-10-16 21:57:03 -0400 |
commit | 81744b34d4d24cb5484e521b41ef90e29914f1f7 (patch) | |
tree | d8d2cfe53f41e7253346d27ee7429fdeb5c1e45a | |
parent | 96884886a7fe9363692ea1f54f3aff74248f276a (diff) | |
download | PerlNavigator-81744b34d4d24cb5484e521b41ef90e29914f1f7.zip |
LRU-cache not respecting TTL? Revisit
-rw-r--r-- | server/src/refinement.ts | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/server/src/refinement.ts b/server/src/refinement.ts index 0d25bab..b1b1484 100644 --- a/server/src/refinement.ts +++ b/server/src/refinement.ts @@ -6,13 +6,6 @@ import { parseFromUri } from "./parser"; import fs = require("fs"); import Uri from "vscode-uri"; -var LRU = require("lru-cache"); - -// Extremely short 30 second cache of parsed documents. Similar to the one in server.ts, but this is refinement-centric (signatures, navigation). -// Usually only used for typing multiple signatures, hover over the same place, etc. -// Parsing is so fast, I'm not sure this is even needed. -const parsedDocs = new LRU({ max: 10, ttl: 1000 * 30 }); - export async function refineElementIfSub(elem: PerlElem, params: TextDocumentPositionParams, perlDoc: PerlDocument): Promise<PerlElem | undefined> { if (![PerlSymbolKind.LocalSub, PerlSymbolKind.ImportedSub, PerlSymbolKind.Inherited, PerlSymbolKind.LocalMethod, PerlSymbolKind.Method].includes(elem.type)) { return; @@ -35,14 +28,10 @@ export async function refineElement(elem: PerlElem, perlDoc: PerlDocument): Prom const resolvedUri = await getUriFromElement(elem, perlDoc); if (!resolvedUri) return refined; - let doc = parsedDocs.get(resolvedUri); - if (!doc) { - doc = await parseFromUri(resolvedUri, ParseType.refinement); - if (!doc) return refined; - parsedDocs.set(resolvedUri, doc); - } + let doc = await parseFromUri(resolvedUri, ParseType.refinement); + if (!doc) return refined; - let refinedElems = []; + let refinedElems: PerlElem[] | undefined; if ([PerlSymbolKind.Package, PerlSymbolKind.Class].includes(elem.type)) { refinedElems = doc.elems.get(elem.name); } else { |