⚡ perf(vscode): 标差异时旧版本的解析结果按旧内容记着,晚到的答案、翻译插件没变就不再重新解析

This commit is contained in:
cruldra committed 2026-10-13 14:15:33 +11:00
1 parent e9c1c67d6f
commit 5a0c5490ea
8 files changed
+87 -8

No files matched your search

+19
View File
@@ -43,6 +43,25 @@ describe('调用的名字定义成哪种块(DocumentCallees)', () => {
expect(from.asked).toEqual([40, 120])
})
it('revision:查到的答案变了才加一,新版本查到的一样不加(差异按它定旧版本要不要重新解析)', async () => {
const callees = new DocumentCallees(() => {}, [])
const session = callees.session()
session.calleeKind(call('Detail', 40))
session.calleeKind(call('build', 5))
expect(callees.revision).toBe(0)
const kinds: Record<number, BlockKind | null> = { 40: 'class', 5: null }
callees.resolve(1, session.requests(), source(kinds).kindOf)
await vi.waitFor(() => expect(callees.revision).toBe(1))
const same = source(kinds)
callees.resolve(2, session.requests(), same.kindOf)
await vi.waitFor(() => expect(same.asked).toEqual([40, 5]))
await Promise.resolve()
expect(callees.revision).toBe(1)
kinds[40] = 'function'
callees.resolve(3, session.requests(), source(kinds).kindOf)
await vi.waitFor(() => expect(callees.revision).toBe(2))
})
it('被调用的不是名字(没有 name)不问;查了没有(null)不算变了', async () => {
let changed = 0
const callees = new DocumentCallees(() => changed++, [])