From 9b8a43c2bec739475d2843b8409039e4da4bc153 Mon Sep 17 00:00:00 2001 From: Konv Suu <2583695112@qq.com> Date: Thu, 26 Feb 2026 14:31:19 +0800 Subject: [PATCH] fix: normalize file dependencies to ensure cache hits --- .changeset/tender-spoons-sin.md | 5 +++++ packages/core/src/running/finalizeFileResults.ts | 14 +++++++++++--- packages/core/src/running/runConfig.ts | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 .changeset/tender-spoons-sin.md diff --git a/.changeset/tender-spoons-sin.md b/.changeset/tender-spoons-sin.md new file mode 100644 index 000000000..27ef5be03 --- /dev/null +++ b/.changeset/tender-spoons-sin.md @@ -0,0 +1,5 @@ +--- +"@flint.fyi/core": patch +--- + +Normalize file dependencies to ensure cache hits. diff --git a/packages/core/src/running/finalizeFileResults.ts b/packages/core/src/running/finalizeFileResults.ts index 4650c58c3..7629aa94c 100644 --- a/packages/core/src/running/finalizeFileResults.ts +++ b/packages/core/src/running/finalizeFileResults.ts @@ -1,7 +1,10 @@ import { debugForFile } from "debug-for-file"; +import { resolve } from "node:path"; import { DirectivesFilterer } from "../directives/DirectivesFilterer.ts"; import { directiveReports } from "../directives/reports/directiveReports.ts"; +import { normalizePath } from "../host/normalizePath.ts"; +import type { LinterHost } from "../types/host.ts"; import type { LanguageFileDiagnostic } from "../types/languages.ts"; import type { FileReport } from "../types/reports.ts"; import type { LanguageAndFile } from "./types.ts"; @@ -19,6 +22,7 @@ export function finalizeFileResults( filePath: string, languageAndFiles: LanguageAndFile[], reports: FileReport[], + host: LinterHost, skipDiagnostics?: boolean, ) { const directivesFilterer = new DirectivesFilterer(); @@ -35,9 +39,13 @@ export function finalizeFileResults( if (cache?.dependencies) { for (const dependency of cache.dependencies) { - if (!fileDependencies.has(dependency)) { - log("Adding file dependency %s for file %s", dependency, filePath); - fileDependencies.add(dependency); + const normalized = normalizePath( + resolve(dependency), + host.isCaseSensitiveFS(), + ); + if (!fileDependencies.has(normalized)) { + log("Adding file dependency %s for file %s", normalized, filePath); + fileDependencies.add(normalized); } } } diff --git a/packages/core/src/running/runConfig.ts b/packages/core/src/running/runConfig.ts index 33df1390e..1e59efb76 100644 --- a/packages/core/src/running/runConfig.ts +++ b/packages/core/src/running/runConfig.ts @@ -57,6 +57,7 @@ export async function runConfig( filePath, languageAndFiles, reportsByFilePath.get(filePath).flat(), + host, skipDiagnostics, ), ]),